以下两种闭包有什么不同
function foo(x) {
var tmp = 3;
function bar(y) {
alert(x + y + (++tmp));
}
bar(10);
}
foo(2);
foo(2);
无论执行几次foo,alert都是16
function foo(x) {
var tmp = 3;
return function (y) {
alert(x + y + (++tmp));
}
}
var bar = foo(2); // bar 现在是一个闭包
bar(10);
bar(10);
每次调用bar都会在原基础加1,闭包不应该是保存着对变量的引用,为什么第一种每次执行结果不变
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一个每次执行foo都是创建新的闭包,里面的变量都是独立的;第二个只有一个闭包
下面代码同理:
扩展一下: