Heim  >  Artikel  >  Web-Frontend  >  Unterschiede und Gemeinsamkeiten zwischen var und let in Javascript

Unterschiede und Gemeinsamkeiten zwischen var und let in Javascript

黄舟
黄舟Original
2017-08-08 13:52:211579Durchsuche


Der Unterschied zwischen var und let in Javascript

Es gibt drei verschiedene Möglichkeiten, Variablen in Javascript zu deklarieren: let, var und const. Let und const verhalten sich in der lexikalischen Umgebung gleich, aber var wurde in den frühen Tagen eingeführt und wird im Allgemeinen nicht in modernem Javascript verwendet, aber dieser Artikel erklärt es im Detail, in der Hoffnung, nicht zu verwirren Du.

Beispiel 1 Die beiden sind gleich

function sayHi() {
  var phrase = "Hello"; // local variable, "var" instead of "let"

  alert(phrase); // Hello
}

sayHi();

alert(phrase); // Error, phrase is not defined

Beispiel 2 Die beiden sind unterschiedlich

Das Folgende ist unterschiedlich, var hat keinen Blockbereich, sondern nur ein globaler Bereich oder ein Funktionsbereich und kann ein Blockbereich sein.

if (true) {
  var test = true; // use "var" instead of "let"
}

alert(test); // true, the variable lives after if

Wenn wir let in der zweiten Zeile verwenden, kann in der alter-Anweisung nicht auf test zugegriffen werden. Aber var ignoriert den Codeblock, also deklarieren wir die Testvariable tatsächlich als globale Variable.

Das Gleiche gilt für Schleifen. var kann kein Blockbereich oder lokaler Schleifenbereich sein:

for(var i = 0; i < 10; i++) {
  // ...
}

alert(i); // 10, "i" is visible after loop, it&#39;s a global variable

Wenn sich der Codeblock in einer Funktion befindet, wird var zu einer Funktionsebene Variable:

function sayHi() {
  if (true) {
    var phrase = "Hello";
  }

  alert(phrase); // works
}

sayHi();
alert(phrase); // Error: phrase is not defined

Wie Sie sehen können, durchläuft var if, for oder andere Codeblöcke. Zu dieser Zeit hatten frühe Javascript-Blöcke keine lexikalische Umgebung und var ist ein Erbe aus den frühen Tagen.

var wird am Anfang der Funktion verarbeitet

Die var-Deklaration wird am Anfang der Funktion (oder am Anfang des Skripts bei globalen Variablen) verarbeitet. Mit anderen Worten: Die Variable var wird am Anfang der Funktion deklariert, unabhängig davon, wo sie definiert ist (vorausgesetzt, sie ist nicht in einer verschachtelten Funktion definiert). Codebeispiel:
Funktion sayHi() {
Phrase = "Hallo";

  alert(phrase);

  var phrase;
}

hat den gleichen Effekt wie der folgende Code:

function sayHi() {
  var phrase;

  phrase = "Hello";

  alert(phrase);
}

Auch in ignorierten Codeblöcken:

function sayHi() {
  phrase = "Hello"; // (*)

  if (false) {
    var phrase;
  }

  alert(phrase);
}

Im Allgemeinen Dieses Verhalten wird als „Heben“ bezeichnet, da alle Variablen an die Spitze der Funktion gehoben werden. Der if(false)-Code im Beispiel wird also nie ausgeführt, aber das spielt keine Rolle, var wird an die Spitze der Funktion hochgestuft und die Variable in der (*)-Zeile aller Beispiele existiert bereits.

Die Deklaration wird gefördert, aber die Aufgabe wird nicht gefördert
Das Demonstrationsbeispiel lautet wie folgt:
Funktion sayHi() {
Alert(Phrase);

  var phrase = "Hello";
}

sayHi();

var = Phrase = „Hallo“ hat zwei Aktionen
1. Variablenzuweisung =

deklarieren an der Spitze der Funktion, aber die Zuweisung befindet sich immer an der ursprünglichen Stelle, sodass der tatsächliche Effekt des Codes wie folgt ist:

function sayHi() {
  var phrase; // declaration works at the start...

  alert(phrase); // undefined

  phrase = "Hello"; // ...assignment - when the execution reaches it.
}

sayHi();
Da alle Deklarationen an die Spitze der Funktion befördert werden, haben wir kann an anderer Stelle in der Funktion darauf verweisen, aber die Variablen sind vor der Zuweisung undefiniert. Die beiden oben genannten Beispielalarme werden ohne Fehler ausgeführt. Da die Variable Phrase bereits existiert, aber noch kein Wert zugewiesen wurde, wird „undefiniert“ angezeigt.

Zusammenfassung

Es gibt zwei Hauptunterschiede für var:

1. Variablen haben keinen Blockbereich und der minimale sichtbare Bereich ist die Funktionsebene.

2. Die Variablendeklaration wird an die Spitze der Funktion verschoben.

Dieser Unterschied ist in den meisten Fällen nicht gut. Wir können keine Variablen auf Blockebene erstellen und eine Erhöhung der Variablenposition bietet mehr Raum für Fehler. Daher werden neue Skriptvariablen selten verwendet.

Das obige ist der detaillierte Inhalt vonUnterschiede und Gemeinsamkeiten zwischen var und let in Javascript. 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