zpět k lekci

Odrážejí se ve funkci poslední změny?

důležitost: 5

Funkce řekniAhoj využívá název externí proměnné. Když bude spuštěna, kterou hodnotu použije?

let jméno = "Jan";

function řekniAhoj() {
  alert("Ahoj, " + jméno);
}

jméno = "Petr";

řekniAhoj(); // co zobrazí: "Jan" nebo "Petr"?

Takové situace jsou běžné při vývoji v prohlížeči i na straně serveru. Funkce může být navržena ke spuštění později, než byla vytvořena, například po uživatelské akci nebo síťovém požadavku.

Otázka tedy zní: odráží poslední změny?

Odpověď zní: Petr.

Funkce načítá vnější proměnné tak, jak vypadají právě v tuto chvíli. Používá poslední hodnoty.

Staré hodnoty proměnných se nikam neukládají. Když funkce chce proměnnou, vezme její aktuální hodnotu ze svého vlastního lexikálního prostředí nebo z vnějšího.