In ES6 scheinen mit let oder const deklarierte Variablen im Vergleich zu var ein inkonsistentes Hebeverhalten aufzuweisen.
Zuerst ist es wichtig, das alles zu klären Deklarationen in JavaScript werden angehoben, einschließlich solcher, die let, const, var, function, function* und class verwenden. Dies bedeutet, dass alle diese Deklarationen im gesamten Bereich sichtbar sind, in dem sie definiert sind.
Der Hauptunterschied liegt nicht im Heben, sondern in der Initialisierung von let- und const-Variablen.
Diese zeitliche Lücke zwischen der Deklaration und der Initialisierung führt zu dem Missverständnis darüber Heben.
Für let- und const-Variablen wird der Zeitraum zwischen der Deklaration und der Initialisierung als zeitliche Totzone bezeichnet. Während dieser Zeit führt der Zugriff auf die Variable zu einem ReferenceError.
x = y = "global"; (function() { console.log(x); // undefined console.log(y); // Reference error: y is not defined var x = "local"; let y = "local"; }());
In diesem Beispiel werden die var- und let-Variablen x und y oben im Funktionsumfang deklariert. Allerdings wird die let-Variable y erst später initialisiert, wodurch eine zeitlich tote Zone entsteht, in der der Zugriff auf y einen Fehler auslöst.
Während alle Deklarationen in JavaScript angehoben werden, werden let- und const-Variablen angezeigt ein anderes Initialisierungsverhalten. Dieses Verhalten führt zu dem Eindruck, „nicht gehisst zu werden“, ist aber tatsächlich auf die zeitliche Totzone zurückzuführen, die durch die späte Initialisierung entsteht. Sowohl let- als auch const-Variablen funktionieren in Bezug auf das Heben identisch.
Das obige ist der detaillierte Inhalt vonWarum scheinen „let' und „const' in JavaScript nicht hochgezogen zu werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!