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.