Zeitliche Totzone von Variablen

Feb 17 2023
In diesem Artikel werde ich über diesen coolen Begriff (Wortspiel beabsichtigt) diskutieren, der oft in Javascript-Klatsch und -Interviews verwendet wird. Um TDZ zu verstehen, sollte man ein allgemeines Verständnis des Hoisting-Konzepts von Javascript haben.

In diesem Artikel werde ich über diesen coolen Begriff diskutieren (Wortspiel beabsichtigt), der oft in Javascript-Klatsch und -Interviews verwendet wird. Um TDZ zu verstehen , sollte man ein allgemeines Verständnis des Hoisting-Konzepts von Javascript haben. Noch einmal: Was bedeutet das Heben überhaupt? Lassen Sie mich Sie durch einen einfachen Code führen:

console.log(a)
showNumber()

function showNumber() {
  console.log(7)
}
var a = 5

Warten ! Woher kommt dieses Undefinierte überhaupt?

Immer wenn ein Teil eines Javascript-Programms ausgeführt wird, wird zuerst der Speicher für alle Variablen und Funktionen zugewiesen. Der reservierte Speicher enthält den für die Variablen undefinierten Wert und den Funktionscode wie bei Funktionen. Die Werte im Speicherplatz für die Variable a und die Funktion showNumber im Bild unten geben den genauen Zeitpunkt der Phase wieder, in der unser Code nach Abschluss der Speicherzuweisungsphase mit der tatsächlichen Ausführung beginnt.

Jetzt können wir sagen, dass Javascript unsere Variablen mit diesem speziellen Schlüsselwort undefiniert initialisiert , noch bevor wir es im Code initialisieren. Dieses besondere Verhalten von Javascript wird als Hoisting bezeichnet. Aufgrund des Hoistings von Variablen und Funktionen können wir diese vor ihrer Initialisierung ohne Fehler aufrufen.

Heben von Let und Const

Wir haben gerade erläutert, wie das Heben mit den mit Var deklarierten Variablen funktioniert. Aber wie Sie bereits wissen, sind die Schlüsselwörter let und const die beliebteste und effizienteste Möglichkeit, Variablen nach ES6 zu deklarieren . Schauen wir uns noch etwas genauer an, um zu verstehen, wie das Heben für sie funktioniert, natürlich mit dem einfachen Code unten.

console.log(a)
let a = 5

Unsere Konsole ist dieses Mal mit dem, was wir gerade gemacht haben, nicht zufrieden. Wenn der obige Code ausgeführt wird, bricht er ab, weil wir gegen die Javascript-Regel verstoßen haben, indem wir versucht haben, auf eine Variable zuzugreifen, die mit dem Schlüsselwort let deklariert wurde, bevor sie vollständig initialisiert wurde. Mal sehen, was wir haben,

Im Gegensatz zu var werden mit let und const deklarierte Variablen vor ihrer Deklaration beim Hochziehen nicht initialisiert und können daher nicht auf sie zugreifen. Genau dieser Codebereich, in dem wir nicht auf solche Variablen zugreifen können, wird als Temporal Dead Zone bezeichnet.

Lasst uns die Dinge ein wenig ändern,

let a;
console.log(a)
a = 5;

Diesmal ist es keine Überraschung, denn wir haben es bereits deklariert und stehen uns nun zur Nutzung zur Verfügung. Der Wert scheint immer noch ( undefiniert) zu sein, der beim Hochziehen der Variablen a erhalten wurde , da wir ihn in unserem Code noch nicht initialisiert haben (bis zur zweiten Zeile). Wenn der Code weitergeht, wird der Wert von a , dh undefiniert, durch das ersetzt, womit wir ihn initialisieren (5 im obigen Fall). In diesem Fall endet die zeitliche Totzone der Variablen a ( während des Hochziehens , weil Javascript sie mit undefiniert initialisiert ) als sobald es beginnt, da es oben in unserem Code mit dem zu verwendenden Wert undefiniert (bis zur expliziten Initialisierung) verfügbar ist.

Das gleiche Konzept von TDZ und Hoisting mit let gilt abgesehen von ihren Unterschieden auch für die mit const deklarierten Variablen.

Abschluss

Die temporäre Totzone ist einfach der Codebereich, in dem auf die mit let und const deklarierten Variablen nicht zugegriffen werden kann. Jeder Entwickler, der mit dem Temporal Dead Zone- Konzept schlecht zurechtkommt, könnte Dinge kaputt machen und Schwierigkeiten beim Debuggen haben. Das Initialisieren eines Werts immer mit einer Variablendeklaration ist der beste Ansatz, den Sie wählen können, um eine zeitliche Totzone und ihre Folgen zu vermeiden.

Haben Sie einen guten Tag !