Im Vergleich zu C/C ++ kann die für die Schleife in ECMascript keinen lokalen Kontext erstellen.
Die Codekopie lautet wie folgt:
für (var k in {a: 1, b: 2}) {
Alarm (k);
}
Alarm (k); // Obwohl die Schleife beendet ist, befindet sich die Variable K immer noch im aktuellen Bereich
Variablen können jederzeit nur mithilfe des VAR -Schlüsselworts deklariert werden.
Die obige Zuweisungsanweisung:
a = 10;
Dies erstellt lediglich eine neue Eigenschaft für das globale Objekt (es ist jedoch keine Variable). "Keine Variable" bedeutet nicht, dass es nicht geändert werden kann, sondern dass es nicht dem variablen Konzept in der ECMAScript -Spezifikation entspricht. Daher ist es "keine Variable" (der Grund, warum es zu einer Eigenschaft eines globalen Objekts werden kann, besteht ausschließlich darin, dass ein globales Objekt in JavaScript nicht deklariert wird, sondern eine Variable, sondern eine Eigenschaft zum globalen Objekt hinzufügen kann.
Sehen wir uns ein einfaches Beispiel an, um das Problem zu veranschaulichen
Die Codekopie lautet wie folgt:
if (! ("a" im Fenster)) {
var a = 1;
}
Alarm (a);
Erstens sind alle globalen Variablen Eigenschaften des Fensters und die Anweisung var a = 1; entspricht dem Fenster. A = 1;
Sie können die folgende Methode verwenden, um festzustellen, ob die globale Variable deklariert wird
"Variablername" im Fenster
Zweitens stehen alle variablen Erklärungen an der Spitze des Umfangsbereichs und sehen Sie sich ein ähnliches Beispiel an:
Die Codekopie lautet wie folgt:
alarm ("a" im Fenster);
var a;
Obwohl die Erklärung nach der Warnung vorliegt, wird der Alarm immer noch der Fall, da die JavaScript -Engine zuerst alle variablen Erklärungen fegen und diese variablen Erklärungen an die Spitze verschiebt. Der endgültige Codeeffekt ist wie folgt:
Die Codekopie lautet wie folgt:
var a;
alarm ("a" im Fenster);
Drittens müssen Sie die Bedeutung der Frage verstehen, dass die Variablenerklärung fortgeschritten ist, die variable Zuordnung jedoch nicht, da diese Codezeile die Variablenerklärung und die variable Zuordnung enthält.
Sie können die Anweisung in den folgenden Code teilen:
Die Codekopie lautet wie folgt:
var a; // Stellungnahme
a = 1; // Initialisieren Sie die Zuordnung
Zusammenfassend lässt sich sagen, dass die JavaScript -Engine, wenn die variable Deklaration und Zuordnung zusammen verwendet wird, automatisch in zwei Teile unterteilt, um die Variablenerklärung voranzutreiben. Der Schritt der Zuordnung ist nicht voranschreitet, da er die Codeausführung beeinflussen und unerwartete Ergebnisse erzielen kann.
Der Code in der Frage entspricht:
Die Codekopie lautet wie folgt:
var a;
if (! ("a" im Fenster)) {
a = 1;
}
Alarm (a);
Gemäß der Analyse des obigen Beispiels müssen Sie vor der deklarierten lokalen Variablen VAR hinzufügen, wenn die Variable deklariert wird. Wenn die deklarierte globale Variable, können Sie VAR nicht hinzufügen (es ist am besten, die Anzahl der globalen Variablen zu begrenzen und zu versuchen, lokale Variablen zu verwenden).
Im Folgenden beschreibt mehrere Merkmale der Verwendung von Var
Die Verwendung einer VAR -Erklärung, um eine Variable mehrmals zu deklarieren, ist nicht nur legal, sondern auch keine Fehler.
Wenn eine wiederverwendete Deklaration einen Anfangswert hat, dient sie nur als Zuordnungsanweisung.
Wenn eine wiederverwendete Deklaration keinen Anfangswert hat, hat sie keinen Einfluss auf die ursprüngliche Variable.
Variablen ohne VAR -Deklarationen existieren als globale Variablen; Variablen mit VAR -Deklarationen gehören zu lokalen Variablen, insbesondere in Funktionen. Und nach dem Test ist es schneller, mit VAR zu deklarieren als mit Var. Legen Sie so viele lokale Variablen wie möglich in der Funktion ein, die sicher und schnell sind, und variable Operationen sind vernünftiger, und es werden keine logischen Fehler geben, die durch den zufälligen Betrieb globaler Variablen in der Funktion verursacht werden.
Es ist am besten, die eigene persönliche Methode des Objekts bei der Deklonation eines Objekts zu verwenden, da diese Geschwindigkeit viel schneller ist als die neue Methode.
Der variable Name wird von Ihnen genommen. Um sich um die Semantik und Spezifikationen zu kümmern, kann der variable Name etwas länger sein, aber seien Sie vorsichtig, die Länge des variablen Namens wirkt sich auch auf die Ausführungsgeschwindigkeit des Codes aus. Lange Deklarationen der variablen Namen sind nicht so schnell wie kurz.