如何在JavaScript中调用函数及其子函数?

时间:2018-06-04 06:53:13

标签: javascript

我正在学习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两个变量?

2 个答案:

答案 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;
&#13;
&#13;