Quelles variables sont disponibles ?
La fonction makeWorker ci-dessous crée une autre fonction et la renvoie. Cette nouvelle fonction peut être appelée ailleurs.
Aura-t-elle accès aux variables externes depuis son lieu de création, ou depuis le lieu dâinvocation, ou les deux ?
function makeWorker() {
let name = "Pete";
return function() {
alert(name);
};
}
let name = "John";
// créons une fonction
let work = makeWorker();
// appelons-la
work(); // que va-t-elle afficher ?
Quelle valeur va-t-elle afficher ? âPeteâ ou âJohnâ ?
La réponse est : Pete.
La fonction work() dans le code ci-dessous obtient name du lieu de son origine via la référence dâenvironnement lexical externe :
Donc, le résultat est "Pete" ici.
Mais sâil nây avait pas de let name dans makeWorker(), alors la recherche irait à lâextérieur et prendrait la variable globale comme nous pouvons le voir dans la chaîne ci-dessus. Dans ce cas, le résultat serait "John".
