以下のコードで、複数の呼び出しが呼び出されるたびcounter
に値が増加する理由を誰かが説明してくれませんか?i
私の理解では、変数を介して が呼び出されるたびに を具体的に設定i = 0;
すると、を 0 にリセットする必要があります。なぜそうならないのか理解できません。makeCounter
makeCounter
counter
i
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