【发布时间】:2013-06-28 17:11:10
【问题描述】:
请有人在下面的代码中向我解释为什么多次调用counter 会导致每次调用i 的值都会增加?
我的理解是,由于我们在makeCounter中专门设置了i = 0;,所以每次通过counter变量调用makeCounter时,i应该重置为0。我不明白为什么这不是案例。
function makeCounter() {
// `i` is only accessible inside `makeCounter`.
var i = 0;
return function() {
console.log( ++i );
};
}
// Note that `counter` and `counter2` each have their own scoped `i`.
var counter = makeCounter();
counter(); // logs: 1
counter(); // logs: 2
【问题讨论】:
标签: javascript closures scope