Une fonction récupère-t-elle les dernières modifications ?
La fonction sayHi utilise un nom de variable externe. Lorsque la fonction s’exécute, quelle valeur va-t-elle utiliser ?
let name = "John";
function sayHi() {
alert("Hi, " + name);
}
name = "Pete";
sayHi(); // qu'affichera-t-elle : "John" ou "Pete" ?
De telles situations sont courantes à la fois dans le développement côté navigateur et côté serveur. Une fonction peut être programmée pour s’exécuter plus tard qu’elle n’est créée, par exemple après une action de l’utilisateur ou une demande réseau.
Donc, la question est : reprend-elle les derniers changements ?
La réponse est : Pete.
Une fonction obtient des variables externes telles qu’elles sont maintenant, elle utilise les valeurs les plus récentes.
Les anciennes valeurs de variable ne sont enregistrées nulle part. Lorsqu’une fonction veut une variable, elle prend la valeur actuelle de son propre environnement lexical ou de l’environnement externe.