Maison >interface Web >js tutoriel >Les instructions « let » créent-elles des propriétés globales en JavaScript ?
Les déclarations Let introduisent-elles des propriétés globales ?
En JavaScript, les déclarations var créent des propriétés sur l'objet global. Cependant, laissez les déclarations, introduites dans ES6, appliquer la portée lexicale avec une visibilité au niveau du bloc.
Laissez-vous les déclarations créer des propriétés globales ?
Selon la spécification ECMAScript, laissez les instructions ne créent pas de propriétés sur l'objet global. Les liaisons globales sont principalement stockées dans l'enregistrement d'environnement d'objet de l'environnement global, qui est lié à l'objet global. Les déclarations de fonctions, de générateurs et de variables utilisant var sont incluses dans cet enregistrement d'environnement d'objet, tandis que d'autres déclarations, telles que let, sont stockées dans l'enregistrement d'environnement déclaratif.
Explication
Contrairement à var, qui crée directement des propriétés sur l'objet global, les liaisons let sont contenues dans l'enregistrement d'environnement déclaratif. Cet enregistrement utilise une structure de données interne, le rendant inaccessible en externe. En revanche, les enregistrements d'environnement d'objet exploitent un objet JS pour le stockage de données, où chaque propriété d'objet représente une liaison. Par conséquent, les liaisons var sont reflétées en tant que propriétés de l'objet global.
Comportement du navigateur et de Node.js
Dans les navigateurs, certaines implémentations, comme Firefox, présentent un comportement qui contredit le cahier des charges. laisser les liaisons apparaître en tant que propriétés sur l'objet global (fenêtre). Cependant, dans les environnements Node.js stricts, en utilisant les indicateurs --harmony ou --harmony_top_level, laissez les liaisons être correctement isolées dans l'enregistrement de l'environnement déclaratif.
Conclusion
Malgré leur portée lexicale, laissez les déclarations n'introduire pas de propriétés sur l'objet global. Au lieu de cela, ils se limitent à l'enregistrement d'environnement déclaratif de l'environnement global, mettant l'accent sur l'encapsulation et la visibilité au niveau des blocs qu'ils offrent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!