Hochziehen von Variablen, die mit let oder const deklariert wurden
Während sich mit var deklarierte Variablen beim Hochziehen wie erwartet verhalten, werden die mit let oder const deklarierten Variablen angezeigt unterschiedliches Verhalten.
Heben aller Deklarationen
Alle JavaScript-Deklarationen (var, let, const, function, function*, class) werden hochgezogen, was bedeutet, dass sie überall innerhalb ihres jeweiligen Geltungsbereichs erkennbar sind.
Initialisierungsunterschied
Es besteht jedoch ein Unterschied zwischen var/function/function*- und let/const/class-Deklarationen in ihrer Initialisierung. Var-Deklarationen werden ab dem Zeitpunkt der Bindungserstellung am Anfang des Bereichs mit undefiniert initialisiert. Im Gegensatz dazu bleiben let/const/class-Deklarationen nicht initialisiert, bis ihre Anweisung ausgewertet wird.
Temporale Totzone für nicht initialisierte Variablen
Dieser nicht initialisierte Zustand erzeugt eine „zeitliche Totzone“. " wobei der Zugriff auf die Variable vor der Initialisierung zu einem führt Referenzfehler.
Beispiel:
x = y = "global"; (function() { x; // undefined y; // Reference error: y is not defined var x = "local"; let y = "local"; }());
let vs. const in Hoisting
Let und const funktionieren hinsichtlich der Begriffe identisch des Hebens. Der Unterschied zwischen ihnen besteht darin, dass einer Konstanten bei der Deklaration immer ein Wert zugewiesen werden muss.
Fazit
Mit let oder const deklarierte Variablen werden angehoben, bleiben jedoch darin nicht initialisiert eine zeitliche Totzone, bis ihre Deklarationsanweisung verarbeitet wird. Ein vorzeitiger Zugriff führt zu einem ReferenceError.
Das obige ist der detaillierte Inhalt vonWie unterscheiden sich „let' und „const' von „var' beim JavaScript-Hoisting?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!