Heim > Web-Frontend > js-Tutorial > Heben: mit Blick auf die zeitliche Totzone

Heben: mit Blick auf die zeitliche Totzone

DDD
Freigeben: 2024-12-13 12:44:11
Original
626 Leute haben es durchsucht

Hoisting: facing Temporal dead zone

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.


Analyse einiger Beispiele

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
Nach dem Login kopieren

2.- Das könnte sich ändern, wenn wir var anstelle von let:
verwenden

favCoffee = 'espresso'

function showFavoriteCoffe() {
  console.log(favCoffee)
}
showFavoriteCoffe() //espresso

var favCoffee

Nach dem Login kopieren

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'
Nach dem Login kopieren

Obwohl var in diesem Beispiel auch hochzieht, stehen wir hier vor der TDZ.


Temporäre tote Zone

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

}
Nach dem Login kopieren

Danke ES6*

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

Nach dem Login kopieren
//using const
favCoffee = 'expresso'
const favCoffee
console.log(favCoffee) // uncaught ReferenceError: Cannot access 'favCoffee' before initialization

Nach dem Login kopieren

(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).


Abschluss

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!

Quelle:dev.to
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