Hallo,
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.
In gewisser Weise logisch, ja, aber nicht besonders sinvoll.
Denn es bedeutet, dass ich Variabeln die ein Objekt beinhalten können immer einen Wert vom Typ 'object' haben.
Das ist in einer eigentlich typfreien Programmiersprache doch unnötig. Mit dem gleichen Argument könnte man leere Parkplätze zu Autos erklären. Die sind auch nur dazu da, Autos aufzunehmen. Aber es sind eben nur leere Parkplätze, keine Autos.
Ich weiß nicht, für welchen Zweck du null einsetzen möchtest und was du mit den von dir vorgeschlagenen Typen machen willst.
Ist doch klar: Ich will vielleicht manchmal wissen, was in einer Variable gespeichert ist, und zwar direkt, ohne ein Auto zusätzlich fragen zu müssen, ob es nicht in Wirklichkeit nur ein Parklplatz ist.
Aber ich bin bisher mit dieser Konvention gut und ohne Probleme zu recht gekommen.
Ich auch, außer in Verbindung mit typeof. Wozu sollte man denn typeof überhaupt verwenden, wenn nicht um zu erfahren, mit was für einem Wert man es zu tun hat? Wenn die Auskunft 'null' wäre, hätte ich kein Problem zu erkennen, dass auch ein Objekt hinpasst. Wenn die Antwort jetzt 'object' lautet, weiß ich aber nicht, ob ich mit diesem "Objekt" arbeiten kann. Also was nützt das?
Nehmen wir z.B. ein Array a mit i Elementen, und jedes Element a[i], das ein Objekt ist...
Wenn die Werte unterschiedliche Typen sind, dann darf kein Eintrag eine null sein, was ja aussagen würde, dass es ein Objekt ist.
*Grummel*, nein! Es würde nur aussagen, dass es *vielleicht* ein Objekt ist. Wenn die Werte sonstwo zusammengklaubt wurden, ist vielleicht ein Objekt zur Zeit nicht existent und der Wert null, aber das könnte mir typeof doch direkt sagen ohne um den Brei herumzureden: "'object', hehe, aber frag' mich bloß nicht, ob's auch stimmt".
Aber letztlich ist typeof sowieso mit Vorsicht zu geniessen
Wieso eigentlich? Klar: Weil es zum Teil unbrauchbare Ergebnisse liefert, wie z.B. typeof null === 'object'
:P
Gruß, Don P