カウンタは独立していますか?
重要性: 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 を持ちます。