カウンタは独立していますか?
重要性: 5
ここで2つのカウンタを作ります: 同じ makeCounter
関数を使って counter
と counter2
を作ります。
それらは独立していますか?2つ目のカウンタは何が表示されるでしょうか? 0,1
or 2,3
or その他?
function makeCounter() {
let count = 0;
return function() {
return count++;
};
}
let counter = makeCounter();
let counter2 = makeCounter();
alert( counter() ); // 0
alert( counter() ); // 1
alert( counter2() ); // ?
alert( counter2() ); // ?
答え: 0,1.
関数 counter
と counter2
は異なる makeCounter
の呼び出しで作られています。
そのため、それらは独立した外部のレキシカル環境を持っており、それぞれ独自の count
を持ちます。