Heim > Web-Frontend > js-Tutorial > Warum scheinen „let' und „const' in JavaScript nicht hochgezogen zu werden?

Warum scheinen „let' und „const' in JavaScript nicht hochgezogen zu werden?

DDD
Freigeben: 2025-01-03 02:29:40
Original
352 Leute haben es durchsucht

Why Do `let` and `const` Seem Not to Be Hoisted in JavaScript?

Höhen von mit let oder const deklarierten Variablen

In ES6 scheinen mit let oder const deklarierte Variablen im Vergleich zu var ein inkonsistentes Hebeverhalten aufzuweisen.

Der Mythos des Hebens

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 Unterschied zwischen let und const

Der Hauptunterschied liegt nicht im Heben, sondern in der Initialisierung von let- und const-Variablen.

  • var/function/function*: Diese Deklarationen werden mit undefiniert oder der Funktion selbst initialisiert, wenn die Bindung oben im Bereich erstellt wird.
  • let/const/class: Diese Deklarationen bleiben uninitialisiert bis Die Anweisung, in der sie definiert sind, wird ausgeführt.

Diese zeitliche Lücke zwischen der Deklaration und der Initialisierung führt zu dem Missverständnis darüber Heben.

Die zeitliche Totzone

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.

Beispiel

x = y = "global";
(function() {
    console.log(x); // undefined
    console.log(y); // Reference error: y is not defined

    var x = "local";
    let y = "local";
}());
Nach dem Login kopieren

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.

Fazit

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage