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,闭包不应该是保存着对变量的引用,为什么第一种每次执行结果不变
下面代码同理:
扩展一下: