Struppi: globale variablen und funktionen

Beitrag lesen

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.

Das ist die Frage, ist typeof wirklich dazu da, zu ermitteln ob es ein Auto ist oder nicht eher ob der Wert den Platz für ein Auto bereit hält? Vielleicht ist die Wahl des Ausdrucks unglücklich gewählt.

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.

Dann musst du Fragen ob es ein instanceof einem Auto 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?

Naja, du weißt, das eigentlich ein Objekt erwartet wurde. Das ist die einzige Information die dir null gibt, ansonsten könntest du auch false, 0 oder einen Leerstring benutzen, um anzuzeigen das etwas nicht vorhanden ist.

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

Tut es ja auch nicht, es sagt dir, dass an dieser Stelle eigentlich ein Objekt stehen müßte, aber irgendwer oder irgendwas das vergeigt hat. Wenn du mehr wissen willst: alert(null instanceof Object)

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

Nein, weil es nur object, number, boolean, string, function und undefined gibt. Darüber hinaus aber anscheinend auch Browser, die das nicht richtig machen, wie Mathias behauptet, der auch nicht so ganz zufrieden mit null als Objekt zu sein scheint.

Struppi.