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"; });
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
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!