In Java können Sie eine Variable verwenden instanceOf
oder verwenden getClass()
, um ihren Typ herauszufinden.
Wie finde ich den Typ einer Variablen in JavaScript heraus, der nicht stark typisiert ist?
Woher weiß ich zum Beispiel, ob das bar
ein Boolean
oder ein Number
oder ein ist String
?
function foo(bar) {
// what do I do here?
}
javascript
Tom Tucker
quelle
quelle
Antworten:
Verwendung
typeof
:So können Sie tun:
Seien Sie jedoch vorsichtig, wenn Sie diese Grundelemente mit ihren Objekt-Wrappern definieren (was Sie niemals tun sollten, verwenden Sie nach Möglichkeit Literale):
Der Typ eines Arrays ist immer noch
object
. Hier braucht man wirklich deninstanceof
Operator.Aktualisieren:
Ein weiterer interessanter Weg ist die Untersuchung der Ausgabe von
Object.prototype.toString
:Damit müssten Sie nicht zwischen primitiven Werten und Objekten unterscheiden.
quelle
typeof ist nur für die Rückgabe der "primitiven" Typen wie Zahl, Boolescher Wert, Objekt, Zeichenfolge und Symbole geeignet. Sie können auch
instanceof
testen, ob ein Objekt von einem bestimmten Typ ist.quelle
Verwenden von
type
:quelle
Number(1), Boolean(true)...
Die einzigen Probleme sind, wenn Sienew
ein Boxed-Objekt verwenden und es erstellen. Die Verwendung als Funktionen kann tatsächlich nützlich sein, um von anderen Typen zu konvertieren.Boolean(0) === false, Number(true) === 1
null
?typeof null
ist 'Objekt'In Javascript können Sie dies mithilfe der Funktion typeof tun
quelle
Um etwas ECMAScript-5.1-präziser zu sein als die anderen Antworten (manche könnten pedantisch sagen):
In JavaScript haben Variablen (und Eigenschaften) keine Typen: Werte. Außerdem gibt es nur 6 Arten von Werten: Undefiniert, Null, Boolesch, String, Zahl und Objekt. (Technisch gesehen gibt es auch 7 "Spezifikationstypen", aber Sie können Werte dieser Typen nicht als Eigenschaften von Objekten oder Werte von Variablen speichern. Sie werden nur innerhalb der Spezifikation selbst verwendet, um die Funktionsweise der Sprache zu definieren. Die Werte Sie können explizit nur die 6 Typen manipulieren, die ich aufgelistet habe.)
Die Spezifikation verwendet die Notation "Typ (x)", wenn sie über "den Typ von x" sprechen möchte. Dies ist nur eine Notation, die in der Spezifikation verwendet wird: Sie ist kein Merkmal der Sprache.
Wie andere Antworten deutlich machen, möchten Sie in der Praxis möglicherweise mehr als den Typ eines Werts wissen - insbesondere, wenn der Typ Objekt ist. Unabhängig davon und der Vollständigkeit halber ist hier eine einfache JavaScript-Implementierung von Typ (x), wie sie in der Spezifikation verwendet wird:
quelle
Ich finde es frustrierend, dass
typeof
das so begrenzt ist. Hier ist eine verbesserte Version:Probentest:
quelle
Für integrierte JS-Typen können Sie Folgendes verwenden:
Hier verwenden wir die Methode 'toString' aus der Klasse 'Object', die anders funktioniert als die gleiche Methode eines anderen Typs.
Beispiele:
Wenn Sie einen Klassennamen benötigen, können Sie Folgendes verwenden:
Beispiele:
Diese Funktion wurde jedoch in ES2015 hinzugefügt .
quelle
Hier ist die Komplettlösung.
Für exportierbares CommonJs-Modul oder RequireJS-Modul ....
Jetzt können Sie diesen Sys-Code in eine Sys.js-Datei importieren. Dann können Sie diese Sys-Objektfunktionen verwenden, um den Typ der JavaScript-Objekte herauszufinden
Sie können auch überprüfen, ob Objekt definiert ist oder Typ Funktion ist oder ob das Objekt leer ist ... usw.
Beispielsweise
quelle
In JavaScript ist alles ein Objekt
Verwenden Sie diese Option, um den Real- Typ zu erhalten
Hoffe das hilft
quelle