typeof regelt nicht alles.
Ja richtig. Es muss auch nicht alles regeln. Es muss nur Primitives von Nicht-Primitives unterscheiden.
[Arrays, Objects] Oder wie pflegst du es, diese Kandidaten zu erkennen?
Gar nicht wenn ich es nicht aus besonderen Gründen muss.
Als Objekt in JavaScript verhält sich praktisch alles, was nicht null und nicht undefined ist. Meine Funktionen erwarten üblicherweise Objekte, um dort Eigenschaften nachzuschlagen. Das ist bei allen Werten möglich, die nicht null oder undefined nicht. Warum einen strengen Typecheck machen? Höchstens um grob fehlerhafte Benutzung zu erkennen.
Ich prüfe auch nicht explizit auf Arrays. Wenn überhaupt prüfe ich auf Listen. Denn viele Listen in JavaScript sind keine Arrays. Eine Liste ist ein Wert, der nicht null und nicht undefined ist, length-Eigenschaft sowie Eigenschaften 0, 1 … n hat. Das trifft auch auf Strings zu, aber das ist i. d. R. von Vorteil und kein Problem.
Sebastian