torna alle lezioni

Sono indipendenti i contatori?

importanza: 5

Qui costruiamo due contatori: counter e counter2 utilizzando la stessa funzione makeCounter.

Sono indipendenti? Cosa mostrerà il secondo contatore? 0,1 oppure 2,3 o qualcos altro?

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() ); // ?

La risposta corretta è: 0,1.

Le funzioni counter e counter2 vengono create da diverse invocazioni di makeCounter.

Quindi ognuna di esse possiede Lexical Environment indipendente, onguno con la propria varaibile count.