Чи лічильники незалежні?
важливість: 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
.