我最近在一次采访中遇到一个问题,该问题使用JavaScript中的函数实现计算器,如下所示:five(plus(one())); //returns 6seven(minus(one())); // returns 6我将如何实施? 最佳答案 一种方法是创建一个函数getNumber(x),该函数将返回一个函数(称为foo)。 Foo接受运算符功能作为输入,并将运算符功能应用于x。但是,在您的示例中,并非总是给出数字的运算符功能(例如:one()),因此,在这种情况下,运算符将默认为identity function,它将返回数字(例如:x需要返回one()),如果未提供该运算符。您还可以创建一个函数1,在其中可以为两个数字(setOperator和x)提供一个运算符,然后在调用数字函数的结果上调用该函数。运算符函数使用y,然后返回一个新函数,该函数使用y。通过使用函数(例如:x)可以看到,five(plus(one()))首先提供给运算符,然后在调用foo函数时提供one(),因此,我们需要首先接受5 ,然后是y。请参见下面的示例:const getNumber = x => (f = x => x) => f(x);const setOperator = f => y => x => f(x, y);const five = getNumber(5);const one = getNumber(1);const seven = getNumber(7);const plus = setOperator((x, y) => x+y);const minus = setOperator((x, y) => x-y);console.log(five(plus(one()))); // 6console.log(seven(minus(one()))); // 6
09-11 18:48
查看更多