Které promÄnné jsou dostupné?
NásledujÃcà funkce vytvoÅPracovnÃka vytvoÅà jinou funkci a vrátà ji. Nová funkce může být volána odjinud.
Bude mÃt pÅÃstup k vnÄjÅ¡Ãm promÄnným z mÃsta svého vzniku, nebo z mÃsta volánÃ, nebo z obojÃho?
function vytvoÅPracovnÃka() {
let jméno = "Petr";
return function() {
alert(jméno);
};
}
let jméno = "Jan";
// vytvoÅenà funkce
let pracuj = vytvoÅPracovnÃka();
// jejà volánÃ
pracuj(); // co zobrazÃ?
Kterou hodnotu zobrazÃ? âPetrâ nebo âJanâ?
OdpovÄÄ znÃ: Petr.
Funkce pracuj() uvedená v následujÃcÃm kódu naÄte jméno z mÃsta svého vzniku odkazem na vnÄjšà lexikálnà prostÅedÃ:
Výsledkem zde je tedy "Petr".
Kdyby vÅ¡ak ve funkci vytvoÅPracovnÃka() nebylo let jméno, pak by hledánà pokraÄovalo dál ven a pÅevzalo globálnà promÄnnou, jak vidÃme v uvedeném ÅetÄzci. V tom pÅÃpadÄ by výsledek byl "Jan".