Struppi: Was bedeutet dieser Code?

Beitrag lesen

Nun aber richtig: in JS<1.1 kann man nur gegen null prüfen. Dies knallt, wenn man direkt eine nicht deklarierte Variable abfragt. Fragt man sie hingegen als Eigenschaft des window-Objekts ab, klappt's. Genauso gibt's keine Probleme bei Unterobjekten etc.

Dann ist es eine Eigenschaft eines Objektes und keine nicht vorhanden/ nicht deklarierte Variabel, das ist ein Unterschied.

In JS>=1.1&&JS<1.3 gibt's typeof. Hier kann man mit typeof prüfen, ob die Variable vorhanden ist bzw. ob sie noch keinen Wert zugewiesen bekommen hat. Eine Unterscheidung gibt's hier nicht.

Nein, nur ob sie deklariert wurde (und typeof funktionierte schon im Netscape 3.x, keine Ahnung welche Version das ist).

var x;
alert(typeof x);

Ab JS 1.3 kann ich mit einem kleinen Trick unterscheiden, ob sie nicht deklariert wurde, oder ob sie deklariert wurde, aber ihr kein Wert zugewiesen wurde:

var keinwertzugewiesen;

if (typeof nichtda == 'undefined') {
    if (window.nichtda === keinwertzugewiesen)

Nein, hier reicht if(!keinwertzugewiesen)

javascript:var x ;alert(!x);

Genau wie es im Ausgangsposting beschrieben wurde.

Dennoch halte ich es für fraglich, ob der Test gegen null deprecated ist. Und einen ! gegen null habe ich schon in die Hose gehen sehen (bei einer der allseits beliebten Prüfungen auf document.all etc.)

! prüft auf gleich: null, 0, "", false und ist falsch wenn ungleich null, ungleich 0, kein leerstring oder true.

Struppi.