Führen Let-Anweisungen globale Eigenschaften ein?
In JavaScript erstellen var-Deklarationen Eigenschaften für das globale Objekt. Let-Deklarationen, die in ES6 eingeführt wurden, erzwingen jedoch lexikalisches Scoping mit Sichtbarkeit auf Blockebene.
Erstellen let-Deklarationen globale Eigenschaften?
Gemäß der ECMAScript-Spezifikation let Anweisungen erstellen keine Eigenschaften für das globale Objekt. Globale Bindungen werden hauptsächlich im Objektumgebungsdatensatz der globalen Umgebung gespeichert, der mit dem globalen Objekt verknüpft ist. Funktions-, Generator- und Variablendeklarationen mit var sind in diesem Objektumgebungsdatensatz enthalten, während andere Deklarationen, wie z. B. let, im deklarativen Umgebungsdatensatz gespeichert werden.
Erklärung
Im Gegensatz zu var, das Eigenschaften direkt für das globale Objekt erstellt, sind Let-Bindungen im deklarativen Umgebungsdatensatz enthalten. Dieser Datensatz nutzt eine interne Datenstruktur und ist daher von außen nicht zugänglich. Objektumgebungsdatensätze hingegen nutzen ein JS-Objekt zur Datenspeicherung, wobei jede Objekteigenschaft eine Bindung darstellt. Folglich werden Variablenbindungen als Eigenschaften des globalen Objekts widergespiegelt.
Browser- und Node.js-Verhalten
In Browsern zeigen einige Implementierungen, wie Firefox, ein widersprüchliches Verhalten die Spezifikation. Lassen Sie Bindungen als Eigenschaften für das globale Objekt (Fenster) erscheinen. In strikten Node.js-Umgebungen können Bindungen jedoch mithilfe der Flags --harmony oder --harmony_top_level korrekt im deklarativen Umgebungsdatensatz isoliert werden.
Schlussfolgerung
Trotzdem Aufgrund ihres lexikalischen Geltungsbereichs führen Let-Deklarationen keine Eigenschaften für das globale Objekt ein. Stattdessen beschränken sie sich auf den deklarativen Umgebungsdatensatz der globalen Umgebung und betonen die Kapselung und Sichtbarkeit auf Blockebene, die sie bieten.
Das obige ist der detaillierte Inhalt vonErstellen „let'-Anweisungen globale Eigenschaften in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!