1

我在过去看到你可以做这样的事情:

function combine(arg1){
   return function(arg2){
      return (arg1 + arg2);
   };
}
combine("foo")("bar");

结果将是“foobar”。

您当然可以执行以下操作:

(function(x){
    return function(y){
       return x+y;
    };
})(2)(3);

结果是5。

我只是想知道这叫什么。我想我看到了一个我似乎找不到的 Crockford 的小视频,我确信它是在 Good Parts 上,简要地谈到了这一点。我也有书,里面看不到。

这似乎只是调用函数和控制变量范围的另一种方式。

4

4 回答 4

2

我相信你正在寻找Currying这个词

于 2013-04-12T20:30:10.060 回答
1

Rchristiani,Crockford 引用了从两个调用中添加的函数的视频可以在 YouTube 上找到。它是 FrontEndMasters.com 研讨会系列的一部分。

与 Douglas Crockford 一起测试您对函数范围的了解:http: //youtu.be/hRJrp17WnOE

Crockford 的网站包含一份出色的、令人兴奋的 Currying 细分副本。(我不确定原作者是谁。)它显示了多次调用的示例。

http://www.crockford.com/javascript/www_svendtofte_com/code/curried_javascript/index.html

于 2014-09-12T04:46:43.293 回答
0

您正在寻找的是CurryingPartial(这取决于函数是否需要两个以上的参数)。

实际上,您也可以使用ES5 规范中的bind来做到这一点。例如:

function sum(a, b) {
    return a + b;
}

var sum5 = sum.bind(null, 5);

console.log(sum5(10)); // 15
于 2013-04-12T20:33:22.647 回答
0

如果您指的是内部函数从外部函数访问变量的能力,这称为闭包。

你可以在这里阅读闭包:
JavaScript 闭包是如何工作的?

于 2013-04-12T20:27:12.920 回答