javascript中的多个函数调用,如combine(foo)(bar)
Multiple function invocations in javascript ie combine(foo)(bar)
我以前看到过这样做:
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
相关文章:
- jQueryUI Progress Bar
- Gulp Browserify combine JS
- Combine onload, onresize and onclick
- Combine $(this) and $("li:eq(ui.item.index())")
- jQuery"return{foo:bar,foo2:bar2}"-它是什么
- combine jQuery on ready + change
- 未捕获的类型错误:无法读取属性'combine Reducers'的未定义
- Combine HTML5, CSS and JS
- HTML/JS Nav Bar
- 将函数绑定到baz后调用fn.apply(bar,[])
- javascript getElementsByClassName("foo"||"bar
- 自动播放音频播放列表SoundManager2 bar ui
- 为什么在下面的JavaScript中没有定义bar
- Javascript loading bar
- Python Django Progress Bar django-progressbarupload
- 无法在 js 中打印 foobar 只能打印 foo 和 bar
- JS:将字符串“foo[bar]”转换为代码 obj.foo.bar 的简单方法
- Lazy Load vs Combine/Minify vs CDN Javascript (AngularJS)
- 速记 if/else 语句 : foo?foo:bar vs foo ||酒吧
- javascript中的多个函数调用,如combine(foo)(bar)