我正在学习JavaScript,所以如果这个问题是无稽之谈,那就是正确的。
function greaterThan(n) {
return m => m > n;
}
let greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
// → true
在这个函数中有任何可能的方法来调用函数m=> m > n
以及" greaterthan"功能?
像greaterthan(10(11));我在哪里提供m和n两个变量?
答案 0 :(得分:2)
这就是你这样做的方式
greaterThan(10)(11);
由于greaterThan(n)
返回一个函数,所以你只是调用该函数传递一些参数
function greaterThan(n) {
return m => m > n;
}
console.log(greaterThan(10)(11));
有一种方法可以将多个参数的函数减少到一个参数的函数,这种方式称为 currying
这是一篇有趣的blog来阅读 currying
答案 1 :(得分:0)
该函数是curry,这意味着它一次接受一个参数并返回新的,部分应用的函数,直到提供了所有参数。如果你想在一次传递所有参数的同时执行这样的功能,那么你需要先解开它。
为此,您需要一个提供uncurry
功能的库,或者您可以自己编写。
function uncurry(f) {
if (typeof f != "function" || f.length == 0) { return f; }
return function() {
var r = f;
for (var i = 0; i < arguments.length; i++) { r = r(arguments[i]); }
return r;
};
}
function greaterThan(n) {
return m => m > n;
}
const greaterThanUnc = uncurry(greaterThan);
console.log(greaterThanUnc(10, 11));
&#13;