Heim > Web-Frontend > js-Tutorial > Wie unterscheiden sich das Heben, die zeitliche Totzone und die Initialisierung zwischen „var', „let' und „const' in JavaScript?

Wie unterscheiden sich das Heben, die zeitliche Totzone und die Initialisierung zwischen „var', „let' und „const' in JavaScript?

Patricia Arquette
Freigeben: 2024-12-31 07:08:09
Original
863 Leute haben es durchsucht

How Do Hoisting, the Temporal Dead Zone, and Initialization Differ Between `var`, `let`, and `const` in JavaScript?

Variablenheben mit Let und Const

Während es wahr ist, dass mit var deklarierte Variablen gehisst werden, ist das Verhalten von Variablen, die mit let und const deklariert wurden Diesbezüglich kann es verwirrend sein. Um diese Verwirrung zu beseitigen, lassen Sie uns aufschlüsseln, was passiert.

Heben: Ein universelles Konzept in JavaScript

Alle Variablendeklarationen in JavaScript, einschließlich var , let, const, Funktionen und Klassendeklarationen werden angehoben. Im Wesentlichen wird der Bezeichner innerhalb des Bereichs verfügbar gemacht, in dem er deklariert wurde.

x = "global";
(function() {
    x; // not "global"
    {
        x; // not "global"
        let y; // not initialized
    }
    var x = "local";
    let y = "local";
});
Nach dem Login kopieren

In diesem Beispiel werden alle Variablendeklarationen innerhalb ihres jeweiligen Bereichs (Funktion und Block) angehoben.

Temporale Totzone: Eine Ausnahme für Let und Const

Der Unterschied zwischen var-Deklarationen und let/const-Deklarationen liegt in der Initialisierung. var und andere Deklarationen im alten Stil werden mit undefiniert oder dem Funktionsobjekt initialisiert, wenn die Bindung oben im Bereich erstellt wird. Im Gegensatz dazu bleiben let- und const-Deklarationen uninitialisiert, bis die Anweisung ausgeführt wird.

Dadurch entsteht die sogenannte zeitliche Totzone – ein Zeitraum zwischen der Erstellung der Variablen und seine Initialisierung. Der Versuch, auf die Variable innerhalb dieser Zone zuzugreifen, führt zu einer ReferenceError-Ausnahme.

x = y = "global";
(function() {
    x; // undefined
    y; // ReferenceError: y is not defined
    var x = "local";
    let y = "local";
});
// Block where temporal dead zone applies
Nach dem Login kopieren

Kein Unterschied zwischen Let und Const beim Hoisting

Sowohl let- als auch const-Deklarationen folgen dem gleiches Hubverhalten. Der einzige Unterschied besteht darin, dass const-Variablen zum Zeitpunkt der Deklaration initialisiert werden müssen und später nicht neu zugewiesen werden können.

Das obige ist der detaillierte Inhalt vonWie unterscheiden sich das Heben, die zeitliche Totzone und die Initialisierung zwischen „var', „let' und „const' in JavaScript?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage