Vielleicht denken Sie über die grundlegenden Unterschiede zwischen var vs. let und const nach: „const dient nur zum Lesen, let ist veränderlich und var ist beides " und dass der einzige Unterschied darin besteht, dass ES6 const und eingeführt hat let und var ist eine Old-School-Syntax.
Na ja, überhaupt nicht.
1.- Hier ist offensichtlich, dass wir den Wert nicht let aufrufen können, bevor wir ihn deklarieren
favCoffee = 'espresso' function showFavoriteCoffe() { console.log(favCoffee) } showFavoriteCoffe() // Cannot access 'favCoffee' before initialization let favCoffee
2.- Das könnte sich ändern, wenn wir var anstelle von let:
verwenden
favCoffee = 'espresso' function showFavoriteCoffe() { console.log(favCoffee) } showFavoriteCoffe() //espresso var favCoffee
Ja, vielleicht sieht es nach einer zusätzlichen Potenz von var aus.
Dies wird als Hoisting bezeichnet, ein Prozess, der es Ihnen ermöglicht, Variablen zu verwenden, bevor sie deklariert werden.
3.- Betrachten wir dieses andere Beispiel:
console.log(favCoffee) // undefined var favCoffee = 'americano'
Obwohl var in diesem Beispiel auch hochzieht, stehen wir hier vor der TDZ.
Es ist definiert als der Zustand, in dem auf Variablen nicht zugegriffen werden kann, obwohl sie innerhalb des Gültigkeitsbereichs liegen, aber nicht deklariert wurden.
{ /* TDZ starts . . . */ var favCoffee = 'expresso' // TDZ ends console.log(favCoffee) // expresso }
Im Hebevorgang gibt JS aufgrund der TDZ standardmäßig den var-Wert zurück, der als undefiniert initialisiert wurde, jedoch mit let oder const gibt einen Fehler zurück, der angibt, dass die Variablen nicht deklariert wurden. Dies ist also sehr hilfreich, um Fehler zu erkennen und zwingt Sie dazu, die Verwendung von Variablen zu vermeiden, bevor sie deklariert werden
//using var favCoffee = 'expresso' var favCoffee console.log(favCoffee) // undefined
//using const favCoffee = 'expresso' const favCoffee console.log(favCoffee) // uncaught ReferenceError: Cannot access 'favCoffee' before initialization
(Und aus diesem Grund ist es wichtig, die Verwendung eines Reporter-Lineals wie ESLint in Betracht zu ziehen, um einige Fehler beim Codieren zu vermeiden).
Heben ist immer da, daher ist es wichtig, let und const so weit wie möglich zu verwenden, um undefinierte Fehler zu vermeiden und sie schneller zu erkennen.
** ES6
Das obige ist der detaillierte Inhalt vonHeben: mit Blick auf die zeitliche Totzone. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!