In JavaScript wird var zum Deklarieren von Variablen verwendet, diese Syntax ist jedoch nicht unbedingt erforderlich. In vielen Fällen können wir eine Variable direkt verwenden, ohne sie mit var zu deklarieren.
var x = „XX“;
y="xxx";
Und so weiter. Es gibt ein Problem. Ich möchte beispielsweise in einer bestimmten Codezeile eine deklarierte Variable x verwenden. Aufgrund von Tipp- oder Rechtschreibfehlern wird die Variable als y geschrieben. Implizite" Deklaration einer Variablen. y, im eigentlichen Programmierprozess ist diese Art von Fehler manchmal schwer zu finden.
Wenn Sie diese „implizite“ Deklaration im aktuellen Kontext vornehmen, sucht die JavaScript-Engine zunächst im aktuellen Kontext, um zu sehen, ob diese Variable bereits zuvor deklariert wurde. Wenn nicht, gehen Sie zum vorherigen Kontext, um danach zu suchen nicht gefunden, diese Variable wird endgültig im Fenster deklariert!
Zum Beispiel:
Der Code lautet wie folgt:
window. y = "hello";
function func(){
y = "OH, NO!!!";
}
func();
alert(window.y); //#=> display "OH, NO!!!"
Nach dem Login kopieren
Wenn eine Ebene im Kontext eine solche „implizite“ definierte Variable hat, wird die Variable in dieser Ebene geändert, ohne dass eine neue Variable im Fenster generiert wird. (Diese Art von Fehler ist auch ziemlich ärgerlich, insbesondere wenn komplexerer Code gekapselt wird)
Zum Beispiel:
Der Code lautet wie folgt:
var x = "window.x";
function a() {
var x = "a's x";
var b = function() {
var c = function() {
//no var!
x = "c's x:";
};
alert("before c run,the b.x:" + x);
c();
alert("after c run, the b.x:" + x);
};
alert("a.x is:" + x);
b();
alert("after b function runed, the a.x is:" + x);
};
alert("before a run, window.x:" + x);
a();
alert("after a run, window.x:" + x);
Nach dem Login kopieren
Es gibt folgende Ebenen: window, func a, func b, func c sind immer hierarchisch verschachtelt. Fenster->a->b->c
Sowohl in window als auch in a ist die Variable x definiert, aber in b ist die Variable nicht definiert. In c wird ein x „implizit“ deklariert, und das x ändert letztendlich den Wert der a-Variablen.
Denken Sie daran, dass in JavaScript beim Deklarieren einer Variablen var.
vorangestellt werden muss