在下面的代码中,有人可以向我解释为什么多次调用会counter
导致i
每次调用时值都增加?
我的理解是,正如我们在 中专门设置i = 0;
的makeCounter
,每次makeCounter
通过counter
变量调用,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