Don P: Abfragen ob ein Objekt existiert

Beitrag lesen

High ;)

Es müsste richtig heißen, dass (globale) Variablen immer Eigenschaften des window-Objektes *werden*, wenn man sie zum ersten mal als lvalue in ein einer Zuweisung verwendet.

var myGlobalVar; ist keine Zuweisung.

Nein, es ist eine Deklaration, und zwar in der Regel für eine *lokale* Variable (außer man notiert das im globalen scope). Was hat diese deine Feststellung also mit meiner Aussage über undeklarierte Variablen zu tun, die, als lvalue verwendet, global werden?

? Ich sehe kein Fehlverhalten - auch nicht im FireBug:

if(!myGlobalVar) { alert("myGlobalVar is not defined!"); }


>   
> `if(!window.myGlobalVar) { alert("myGlobalVar is not defined!"); }`{:.language-javascript} hingegen funktioniert wie fehlerfrei.  
  
Das ist ja gerade das Fehlverhalten! Ich glaube gelernt zu haben, dass man die Existenz eines Objekts o einfach abfragen kann mit if(o)..., und dank dieses Threads stellt sich jetzt heraus, dass das so nicht stimmt.  
  
Lediglich die Existenz einer Methode oder einer Eigenschaft eines existierenden Objekts kann mit dieser Kurzform abgefragt werden oder anders ausgedrückt: window als das globale Objekt wird nicht automatisch als das parent-Objekt einer undeklarierten Variablen angesehen, so dass die Kurzform if(o) leider zu einem Fehler führt, wenn typeof o === 'undefined' gilt. Ich halte das für einen Fehler in der Sprache.  
  
Gruß, Don P