【发布时间】:2014-05-28 15:13:34
【问题描述】:
function makeAdder(x) {
return function(y) {
console.log("X:" + x + " Y:" + y);
return x + y;
};
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
console.log(add5(2));
console.log(add10(2));
好吧,我对 developer.mozilla 上闭包下的这个例子有点困惑。
如果有人可以尽可能详细地解释,以便我了解闭包。
忽略console.log,我只是添加了它以查看显示的值,例如,当您执行add5时,我可以看到x是5,y是2。
我安慰 add5() 看看我得到了什么,我得到了 NaN - 我猜这是因为我没有指定一个参数,因为它想要一个并且不能将一个数字添加到 undefined。
所以混淆是madeAdder的内部函数中的参数y。
希望有人能提供比 mozilla 更好的解释...我认为线索是环境,但我是新手,因此需要专家的帮助。
谢谢
【问题讨论】:
-
你到底有什么不明白的,你有什么“困惑”?问题是什么?你读过stackoverflow.com/q/111102/1048572吗?
-
您对
NaN的预感是正确的。 -
只是阅读您在上面提供的内容。我的困惑真的是'y'。
-
这是返回函数的参数,即
add5或add10的参数。
标签: javascript closures