назад до уроку

Чи лічильники незалежні?

важливість: 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.