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.