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.
function sayHi() { var phrase = "Hello"; // local variable, "var" instead of "let" alert(phrase); // Hello } sayHi(); alert(phrase); // Error, phrase is not defined
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'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.
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 =
function sayHi() { var phrase; // declaration works at the start... alert(phrase); // undefined phrase = "Hello"; // ...assignment - when the execution reaches it. } sayHi();
2. Die Variablendeklaration wird an die Spitze der Funktion verschoben.
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!