Var Vs Lass Javascript
cos |
JavaScript |
sep |
sin
Michael Zippo
04.11.2021
Mit der Veröffentlichung von ECMAScript6 (ES6) wurden der JavaScript-Sprache neue Funktionen hinzugefugt. Eine solche Funktion beeinflusst, wie wir Variablen deklarieren. Mit der Hinzufugung von let
und const
kamen alle möglichen Fragen zur Verwendung der einzelnen Variablendeklarationen auf.
In In diesem Beitrag sprechen wir uber jede der Optionen in Bezug auf ihre Definition und Verwendung in der JavaScript-Umgebung.
Pre-ES6: Var
Vor der Veröffentlichung von ES6 wurde die Das Schlusselwort zum Deklarieren von Variablen war var
.
Vars können auch ohne Fehler neu deklariert und aktualisiert werden.
Das erste Problem mit var ist offensichtlich: Umdeklarationen können Fehler in Ihrem Code verursachen, wenn einer Variablen bereits der gleiche Name zugewiesen wurde. Es kann unbeabsichtigte Folgen haben, wenn etwas neu deklariert wird und Sie nicht wissen, dass der Variablenname bereits fruher in der Codebasis verwendet wurde. Dazu kommen noch einige andere Eigenheiten, wenn es um Umfang und Heben geht.
Umfang
Der Gultigkeitsbereich sagt uns, welche Variablen wir verwenden können – Wir haben Variablen, die global oder lokal begrenzt sein können. Was passiert, wenn wir dieselbe Variablendeklaration haben, aber eine global und die andere lokal ist?
Wenn wir unsere Variable au√üerhalb der Funktion deklariert haben, steht sie uns global zur Verfugung. Wenn "hallo‚"innerhalb der Funktion deklariert wird, ist es nur fur die Funktion ‚Äì Funktions- oder lokaler Geltungsbereich.
Wenn wir eine gleiche Variablendeklaration haben, der Gultigkeitsbereich jedoch unterschiedlich ist, √§ndert die var innerhalb der Funktion nichts an der Zuweisung der globalen var, auch wenn der Aufruf von helloWorld()
-Funktion. Da die Variable innerhalb der Funktion mit dem Namen "hello‚" deklariert ist, sucht sie nicht nach dem globalen Gultigkeitsbereich fur die andere Definition.
Hoisting
Wenn eine Variable in JavaScript hochgehoben wird, wird die Deklaration von Funktionen und Variablen vor der Codeausfuhrung an den Anfang ihres Gultigkeitsbereichs verschoben. Die Variable ist deklariert, aber nicht initialisiert, daher ist der Anfangswert der Variablen undefiniert.
Hier, "hallo‚" wird hochgezogen und an der Spitze Ihres Geltungsbereichs deklariert. Im Wesentlichen interpretiert der Computer den Code also wie folgt:
Die JavaScript-Engine sieht, dass hello existiert, weiß aber nicht, was hello definiert ist, bis die next pass through.
Letztendlich erkannten die Entwickler, die an der Erstellung des ECMAScript-Standards mitgewirkt hatten, dass es einige kleine Probleme mit var gab, die Zeit und Geld kosten konnten. Sie machten sich dann daran, strengere Schlusselw√∂rter zu erstellen. Dies fuhrte zur Erstellung von "let‚" und "konst‚" in ES6.
ES6: Let
Das Schlusselwort let
ist dem Schlusselwort var in vielerlei Hinsicht sehr ähnlich. Die Hauptunterschiede liegen darin, wie Fehler zuruckgegeben werden und wie die einzelnen Schlusselwörter bereichsbezogen sind.
Variablen, die mit dem Schlusselwort let
deklariert und initialisiert wurden, können neu zugewiesen, aber nicht neu deklariert werden.
Wenn Sie den obigen Code in einer JavaScript-Konsole ausfuhren, wird in der letzten Zeile ein Fehler ausgegeben:
SyntaxError: Der Bezeichner ’hello’ wurde bereits deklariert
Im Gegensatz zu var
l√§sst die Deklaration von Variablen mit let
keine Deklaration zu derselben zu Variablenname wieder. Sie können es jedoch bei Bedarf neu zuweisen, wie im obigen Beispiel gezeigt.
Bereich
In Bezug auf den Bereich ist let
sehr √§hnlich zu var
. Zus√§tzlich zu den Regeln, die global oder lokal gultig sind, gibt es eine zus√§tzliche Einschr√§nkung mit let
. Innerhalb eines Codeblocks deklarierte Variablen sind nur fur diesen Codeblock verfugbar. Dies ähnelt dem Funktionsumfang, da Funktionen Codeblöcke sind, die noch weiter ubertragen werden können, indem sie separate Blöcke innerhalb dieser Funktion haben.
Dieser Code enth√§lt keinen Fehler, da beide Instanzen von hello werden als separate Variablen behandelt, da sie unterschiedliche Gultigkeitsbereiche haben.
Hoisting
Hoisting ist ein weiterer Bereich, in dem let- und var-Deklarationen √§hnlich sind. "var‚" wird beim Anheben nach oben als undefiniert initialisiert. ‚Äûlassen‚" l√∂st einen Referenzfehler aus, wenn Sie versuchen, es zu verwenden, bevor es initialisiert wird.
Wissen Sie, dass das Schlusselwort let in Bezug auf die Syntax die bessere Wahl ist. Dies liegt daran, dass Fehler ausgegeben werden, wenn Sie versuchen, eine Variable neu zu deklarieren oder sie vor dem Initialisierungsprozess zu verwenden.
ES6: Const
Das Schlusselwort const
hat noch strengere Richtlinien als das Schlusselwort let
. Mit const
können Variablen nicht neu deklariert oder neu zugewiesen werden. Ein TypeError wird ausgelöst, wenn Sie versuchen, eine const
neu zuzuweisen.
Dennoch können beim Arbeiten mit Objekten oder Arrays Eigenschaften des Objekts oder Arrays aktualisiert werden. Solange sich die Grundstruktur des Objekts oder Arrays nicht ändert, können Sie es jederzeit aktualisieren.
Wie im Beispiel gezeigt, fuhrt die Neuzuweisung von Unternehmen zu einem neuen Satz von Eigenschaften zu einem TypeError: Assignment to konstante Variable.
Fehler. Konstanten können nicht neu zugewiesen oder deklariert werden, außer in Fällen, in denen Sie die einzelne Eigenschaft in einem Objekt aktualisieren.