Hvilke variable er tilgængelige?
Funktionen makeWorker nedenfor opretter en anden funktion og returnerer den. Den nye funktion kan kaldes fra et andet sted.
Vil den have adgang til de ydre variable fra sit oprettelsessted, eller fra sit kaldested, eller begge?
function makeWorker() {
let name = "Pete";
return function() {
alert(name);
};
}
let name = "John";
// Opret en funktion
let work = makeWorker();
// Kald den
work(); // Hvad vil den vise?
Hvilken værdi vil den vise: “Pete” eller “John”?
Svaret er: Pete.
Funktionen work() i koden nedenfor får name fra stedet hvor den blev oprettet gennem referencen til det ydre leksikale miljø:
Så resultatet er "Pete" her.
Men, hvis der ikke var let name i makeWorker(), så ville søgningen gå udenfor og tage den globale variabel som vi kan se fra kæden ovenfor. I det tilfælde ville resultatet være "John".