Quelles variables sont disponibles ?
La fonction makeWorker ci-dessous cre une autre fonction et la renvoie. Cette nouvelle fonction peut tre appele ailleurs.
Aura-t-elle accs aux variables externes depuis son lieu de cration, ou depuis le lieu dinvocation, ou les deux ?
function makeWorker() {
let name = "Pete";
return function() {
alert(name);
};
}
let name = "John";
// crons une fonction
let work = makeWorker();
// appelons-la
work(); // que va-t-elle afficher ?
Quelle valeur va-t-elle afficher ? Pete ou John ?
La rponse est : Pete.
La fonction work() dans le code ci-dessous obtient name du lieu de son origine via la rfrence denvironnement lexical externe :
Donc, le rsultat est "Pete" ici.
Mais sil ny avait pas de let name dans makeWorker(), alors la recherche irait lextrieur et prendrait la variable globale comme nous pouvons le voir dans la chane ci-dessus. Dans ce cas, le rsultat serait "John".