Im Gegensatz zu Programmiersprachen wie C und Java sind Variablen in JavaScript keinen Typ, und alle Variablendefinitionen verwenden Schlüsselwörter var:
Die Codekopie lautet wie folgt:
var a;
var m, n;
var x = 42, y = "test";
Wenn der Variablen nach dem Definieren kein Wert zugewiesen wird, ist der Wert der Variablen undefiniert. Beispielsweise sind die Werte der drei Variablen A, M und N im obigen Code undefiniert.
Da Variablen in JS keinen Typ sind, ist es möglich, derselben Variablen unterschiedliche Wertearten zuzuweisen, wie z. B.:
Die Codekopie lautet wie folgt:
var b = "temp";
console.log (typeof b); // String
B = 108;
console.log (typeof b); // Nummer
Zusätzlich zu verschiedenen Arten von Zuordnungen zu derselben Variablen können Variablen auch in JavaScript wiederholt definiert werden. In diesem Fall entspricht die Anweisung Variable Definition nach dem ersten Mal der Zuweisungsanweisung:
Die Codekopie lautet wie folgt:
var c = "Hallo";
console.log (c); // Hallo
var c = true;
console.log (c); // true
Im strengen Modus des ECMAScript -Standards erfordern alle Variablendefinitionen die Verwendung des VAR -Schlüsselworts. Wenn nicht der strenge Modus verwendet wird, erstellt das Programm, wenn das JS -Programm einer undefinierten Variablen einen Wert zuweist, eine Eigenschaft im globalen JS -Objekt mit demselben Namen wie die Variable, dh eine neue globale Variable. Dieser Ansatz bringt viele Probleme (z. B. die globale variable Verschmutzung zwischen mehreren JS -Programmen usw.), was der späteren Wartung erhebliche Probleme verursacht. Daher sollte dieser Ansatz im tatsächlichen Entwicklungsprozess so weit wie möglich vermieden werden.
Speicherung von Variablen
Wenn die definierte Variable eine globale Variable ist und das Schlüsselwort var während des Variablendefinitionsprozesses nicht verwendet wird, existiert die Variable als Eigenschaft des globalen Objekts. Es kann durch den Zugriff auf die entsprechenden Eigenschaften dieses (globales Objekt) erhalten werden oder kann mithilfe des Schlüsselworts Löschen aus dem globalen Objekt gelöscht werden:
Die Codekopie lautet wie folgt:
var e = "GlobalVariableValue"; // Außerhalb einer Funktion definiert, ist es eine globale Variable, speichert jedoch nicht in "This"
f = "GlobalVariableValue2";
this.g = "GlobalVariableValue3";
console.log (this.e.e); // undefiniert
console.log (this.f); // GlobalVariableValue2
console.log (this.g); // GlobalVariableValue3
F;
G löschen;
console.log (this.f); // undefiniert
console.log (this.g); // undefiniert
Für jeden Funktionsaufruf in JavaScript erstellt JavaScript ein lokales Objekt, um die in der Funktion definierten lokalen Variablen zu speichern. Wenn es in der Funktion eine verschachtelte Funktion gibt, definiert JavaScript ein verschachteltes lokales Objekt innerhalb des bereits definierten lokalen Objekts. Für eine Funktion gibt es so viele Schichten verschachtelter Funktionsdefinitionen wie es gibt, wie viele Schichten verschachtelter lokaler Objekte wie es gibt. Dieses lokale Objekt wird als "Funktionsaufrufobjekt" bezeichnet ("Call -Objekt" in ECMascript 3 und wurde in ECMascript 5 in "deklarative Umgebungsaufzeichnung" umbenannt, aber ich persönlich denke, dass der Name in ECMascript 3 einfacher zu verstehen ist).
Im Gegensatz zu globalen Objekten bietet JavaScript keine Möglichkeit, auf diese lokalen Objekte zuzugreifen (Funktionsaufrufobjekte). Daher können Entwickler diese lokalen Objekte nicht operieren. Das Verständnis dieser Funktionsanrufobjekte wird jedoch von großer Bedeutung sein, um einige Konzepte in JavaScript zu verstehen, wie z. B. den Umfang und die Schließung von Variablen.