sschumann: 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.

Ja und nein. Man kann es hervorragend ausnutzen.

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).

Kein 1.3, sondern irgendetwas abartiges.

var x;
alert(typeof x);

Wie meinen? Auch ohne Dein "var x;" käme undefined raus. Also heißt Dein "Nein" eigentlich "Ja", oder?

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)

Nein. Es wird nichtda gepfrüft, nicht keinwertzugewiesen.

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

Sollte es. Tut es aber nicht immer. Genauso wie NS 3.x typeof nicht kennen sollte, und es Layer nicht gibt. Willkommen in der Knetgummiwelt von JS :)

Nun doch ein Gruß: Schönes Wochenende :)