javascript中的多个函数调用,如combine(foo)(bar)

Multiple function invocations in javascript ie combine(foo)(bar)

本文关键字:combine bar foo 函数调用 javascript      更新时间:2023-09-26

我以前看到过这样做:

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上,它简要地讨论了这个。我也有那本书,但我看不出来。

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

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

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

用Douglas Crockford测试你的功能范围知识:http://youtu.be/hRJrp17WnOE

Crockford的网站包含了一份出色的,令人兴奋的curry分解。(我不确定原作者是谁。)它展示了多个调用的示例。

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

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

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

你要找的是Currying,还是Partial(这取决于函数是否接受两个以上的参数)

在ES5规范中,你也可以用bind这样做。例如:

function sum(a, b) {
    return a + b;
}
var sum5 = sum.bind(null, 5);
console.log(sum5(10)); // 15