Wenn a
ist nicht definiert, das funktioniert:Was ist der Unterschied zwischen undefined und window.undefined in JavaScript?
if(window.a) {}
während dies auf einen Fehler wirft:
if(a)
Kann jemand erklären, warum?
Wenn a
ist nicht definiert, das funktioniert:Was ist der Unterschied zwischen undefined und window.undefined in JavaScript?
if(window.a) {}
während dies auf einen Fehler wirft:
if(a)
Kann jemand erklären, warum?
window.a
ist eine Eigenschaft von window
und es ist undefined. a
ist eine Variable, und es ist undeclared.
Um eine Variable zu verwenden, sollten Sie sie zuerst mit der Anweisung var
deklarieren. Da Sie a
nicht deklariert haben, löst der Interpreter einen Fehler aus. Objekteigenschaften müssen nicht explizit deklariert werden, um sie zu verwenden. Crockford schreibt in die guten Teile:
If you attempt to extract a value from an object, and if the object does not have a member with that name, it returns the undefined value instead.
Allerdings: "window.a = 2; a" - Nein 'var' wird benötigt. Es kommt einfach vor, dass die Ausnahme ausgelöst wird, wenn ein "nicht vorangestelltes" Bezeichner-Suchmuster aus verketteten Bereichen ausläuft, um hineinzuschauen. Der letzte überprüfte Kontext ist der globale Kontext (oder "Fenster"). Für die meisten praktischen Zwecke ist "var x" im globalen Kontext dasselbe wie "window.x = undefined". Siehe http://jibbering.com/faq/faq_notes/closures.html und sehen Sie unter "Identifier Resolution, Execution Contexts und Scope Chains" nach. –
@pst: das ist ein Sonderfall in Browsern, dass alle globalen Variablen Eigenschaft von 'window' sind. Es ist ein unabhängiges Problem von JavaScript. Wenn Sie 'window.a = 2 ausführen; a 'In Rhino, das eine Nicht-Browser-Umgebung ist, erhalten Sie immer noch den Referenzfehler. –
@pst: Wie auch immer, danke für Ihre Ergänzung bei der Klärung der Antwort. –
es bitte im Detail erklären. – Salil