Независимы ли счётчики?
важность: 5
Здесь мы делаем два счётчика: counter
и counter2
, используя одну и ту же функцию makeCounter
.
Они независимы? Что покажет второй счётчик? 0,1
или 2,3
или что-то ещё?
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
.