【发布时间】:2018-02-07 02:19:30
【问题描述】:
来自this documentation 闭包:
function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
console.log(add5(2)); // 7
console.log(add10(2)); // 12
我不明白makeAdder(5) 中的参数是如何作为x 接收的,但在add5(2) 中是y。
我希望它两次都说y is undefined。谁能解释一下它是如何工作的?
【问题讨论】:
-
我刚刚意识到它可以被称为
makeAdder(5)(2)这现在是有道理的,但我会留下这个问题,以防有人可以为未来的用户解释它。 -
这也称为柯里化。可以在这里找到完全相同的代码:stackoverflow.com/questions/36314/what-is-currying
-
这是另一个重复的问题...
-
@Endless 然后用指向另一个问题的链接标记它?
-
这不可能是重复的问题。即使我发现了这一点,也只会让我更加困惑。它更复杂,并且引用了这里甚至没有提到的第三方库和范例(箭头函数)。
标签: javascript functional-programming currying