zpět k lekci

Jsou čítače nezávislé?

důležitost: 5

Zde vytvoříme dva čítače: čítač a čítač2 pomocí téže funkce vytvořČítač.

Jsou nezávislé? Co zobrazí druhý čítač? 0,1 nebo 2,3 nebo něco jiného?

function vytvořČítač() {
  let počet = 0;

  return function() {
    return počet++;
  };
}

let čítač = vytvořČítač();
let čítač2 = vytvořČítač();

alert( čítač() ); // 0
alert( čítač() ); // 1

alert( čítač2() ); // ?
alert( čítač2() ); // ?

Odpověď: 0,1.

Funkce čítač a čítač2 byly vytvořeny různými voláními funkce vytvořČítač.

Mají tedy nezávislá vnější lexikální prostředí, každé z nich má svůj vlastní počet.