Hallo,
Oder anders: Bei if(Tab) kann JS (zumindest innerhalb einer Funktion) nicht wissen, ob es sich um ein nicht-existentes Unterobjekt von window handelt, oder um eine nicht-existente lokale Variable.
Stimmt, aber das ist doch auch völlig unwichtig. Wenn etwas im Universum nicht existiert, dann reicht das doch eigentlich als Information. Da muss man doch nicht noch zusätzlich wissen, dass in der Milchstraße auch nicht existiert, in unserem Sonnensystem auch nicht und auch nicht auf der Erde. Denn wenn es dort irgendwo in der Hierarchie existieren würde, dann würde if(es) eben true ergeben, und als das nächstliegende in der Hierarchie angesprochen, basta.
Einen Fehler in der Systematik kann ich hier zumindest nicht feststellen, denn die unterschiedliche Reaktion läßt sich innerhalb der JS-Regeln auch begründen.
Mag sein, dass da noch etwas ist, was ich jetzt nicht bedacht habe. Mir kommt es jedenfalls so vor, als ob hier die Regel, dass im Zweifelsfall immer das globale Objekt herhalten soll, nicht konsequent umgesetzt ist.
Gruß, Don P