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

Heben: mit Blick auf die zeitliche Totzone

DDD
DDDOriginal
2024-12-13 12:44:11689Durchsuche

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

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.


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

}

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

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


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!

Stellungnahme:
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