Ich verstehe, warum Sie Object.prototype.toString()
oder String()
für Tychecking-Arrays verwenden müssen, aber nicht typeof ausreichend für Tychecking-Funktionen und Strings? Zum Beispiel verwendet das Polyfill auf MDN für Array.isArray :
Bei Arrays ist das ziemlich klar, weil Sie typeof
nicht verwenden können, um nach Arrays zu suchen. Valentine verwendet instanceof dafür:
Aber für Strings / Funktionen / booleans / Zahlen, warum nicht typeof
?
jQuery und Underscore verwenden beide etwas, um nach Funktionen zu suchen:
%Vor%Ist das nicht gleichbedeutend damit?
%Vor%oder gar das?
%Vor% Der erste Grund, den ich mir vorstellen kann, ist, dass typeof null
object
zurückgibt, was normalerweise nicht gewünscht ist (da null
kein Objekt ist, sondern ein eigener Typ).
Jedoch gibt Object.prototype.toString.call(null)
[object Null]
zurück.
Aber wie Sie vorschlagen, wenn Sie erwarten, dass etwas ein String oder ein anderer Typ ist, der mit typeof
gut funktioniert, sehe ich keinen Grund, warum Sie typeof
nicht verwenden können (und ich verwende regelmäßig typeof
in diesem Fall).
Ein anderer Grund, warum Bibliotheken wie die von Ihnen erwähnten die gewählte Methode verwenden, ist möglicherweise nur die Konsistenz. Sie können typeof
verwenden, um nach einem Array
zu suchen, verwenden Sie also eine andere Methode und bleiben Sie dabei immer dabei.
Für weitere Informationen, Angus Croll hat einen ausgezeichneten Artikel über die typeof
operator .
Tags und Links javascript types typechecking