Struppi: globale variablen und funktionen

Beitrag lesen

Es geht nicht um typeof, es geht um den Wert. null dient dazu in einem Kontext wo ein Objekt erwartet wird den Nichterfolg anzuzeigen, ansonsten wäre null überflüssig, dann würde auch false reichen.

Jetzt geht es nicht mehr um typeof?

Nein, es geht darum dass null einzig und allein dazu da ist ein Objekt darzustellen - ein nicht vorhandenes Objekt.

Ansonsten hat dieser Wert keinen anderen Zweck. Deshalb ist der Typ von null ein 'object'. Für mich ist das logisch.

Denn es bedeutet, dass ich Variabeln die ein Objekt beinhalten können immer einen Wert vom Typ 'object' haben.

Ich weiß nicht, für welchen Zweck du null einsetzen möchtest und was du mit den von dir vorgeschlagenen Typen machen willst. Aber ich bin bisher mit dieser Konvention gut und ohne Probleme zu recht gekommen.

Nehmen wir z.B. ein Array a mit i Elementen, und jedes Element a[i], das ein Objekt ist, soll um eine Eigenschaft p erweitert werden. Der Code

for (var i in a) { if(typeof a[i]==='object') {a[i].p = p;} }

Wenn wir wissen, dass es immer ein Objekt ist, dann prüfen wir auf null

for (var i in a) { if(a[i] !== null) {a[i].p = p;} }

Wenn die Werte unterschiedliche Typen sind, dann darf kein Eintrag eine null sein, was ja aussagen würde, dass es ein Objekt ist.

Aber letztlich ist typeof sowieso mit Vorsicht zu geniessen und eigentlich nur zu empfehlen, um Fehlermeldung bei einem Wert der nicht deklariert ist zu vermeiden.

Struppi.