Hallo,
Ich verlange auch gar nicht, dass null intern ein eigener Datentyp sein soll (obwohl es so ist),
Wieso ist es?
Es ist vom Typ object.
Weia, jetzt fängst du auch noch an... dabei hatte ich Struppi schon fast überzeugt ;)
Du hast es mit einem „echten“ Objekt zu tun, so „echt“, wie Objekte nur sein können.
Sicher nicht. Wo steht denn das? Irgendein Beweis in Sicht (außer dass typeof es uns vorgaukelt)?
Die oft zusätzlich nötige Abfrage auf null sollte einem von typeof abgenommen werden
Wo ist diese zusätzliche Abfrage denn nötig?
Fast überall! Z.B. immer dann, wenn mich unter versch. Daten nur die Objekte interessieren, weil ich mit ihnen etwas vorhabe, wie z.B. eine zusätzliche Eigenschaft einführen oder auch nur eine abfragen.
Du hast hier wiederholt getElementById als Beispiel angeführt -
nicht wiederholt, sondern nur einziges mal, um zu zeigen, dass man sich null nicht aussuchen muss als Rückgabewert, sondern dass sich der einfach mal ergeben kann.
und gerade da kannst du dir typeof einfach sparen,
if(!document.getElementById(whatever))
reicht vollkommen aus.
Natürlich, so direkt würde ich hier auch nicht mit typeof nachfragen. Aber stell' dir eine Datenstruktur vor, die irgenwann mal befüllt wurde mit verschiedenen Funktionsergebnissen, zum Teil Objekte, auch mal null z.B. durch getElementById oder eine andere Funktion, zum Teil Zahlen, Strings, Booleans...
Wenn die Auskunft, dass null vom Typ object ist, nicht das ist, was du haben willst - dann verwendest du mit typeof schlicht und einfach das falsche Werkzeug.
Kennst du denn ein geeigneteres Werkzeug, um z.B. gezielt die Objekte in besagter Datenstruktur anzusprechen um ihnen z.B. eine neue Eigenschaft zu geben? typeof ist für solche Aufgaben schon geeignet (und ich glaube auch dafür erfunden worden), aber dummerweise nur mit zusätzlichen Abfragen.
Mal anders gefragt:
Was würde man verlieren, wenn typeof null als Ergebnis 'null' lieferte und typeof [] als Ergebnis 'array'?
Richtig: Gar nichts würde man verlieren außer dem Nachteil, solches ggf. umständlich durch zusätzlichen Code in Erfahrung bringen zu müssen, was also de facto ein Vorteil wäre.
Gruß, Don P