Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Der typeof Operator gibt einen String zurück, der den Typ des Werts des Operanden angibt.
Ein Ausdruck, der das Objekt oder das Primitive darstellt, dessen Typ zurückgegeben werden soll.
Die folgende Tabelle fasst die möglichen Rückgabewerte von typeof zusammen. Für weitere Informationen über Typen und Primitives siehe auch die Seite JavaScript-Datenstrukturen.
| Undefined | "undefined" |
| Null | "object" (Grund) |
| Boolean | "boolean" |
| Number | "number" |
| BigInt | "bigint" |
| String | "string" |
| Symbol | "symbol" |
| Function (implementiert [[Call]] in ECMA-262-Terms; Klassen sind ebenfalls Funktionen) | "function" |
| Jedes andere Objekt | "object" |
Diese Liste der Werte ist vollständig. Es sind keine spezifikationskonformen Engines bekannt, die andere Werte als die aufgelisteten produzieren (oder historisch produziert haben).
In der ersten Implementierung von JavaScript wurden JavaScript-Werte als Typ-Tag und Wert dargestellt. Das Typ-Tag für Objekte war 0. null wurde als NULL-Zeiger (0x00 auf den meisten Plattformen) dargestellt. Folglich hatte null 0 als Typ-Tag, daher der typeof Rückgabewert "object". (Referenz)
Ein Fix wurde für ECMAScript vorgeschlagen (via Opt-in), aber wurde abgelehnt. Er hätte dazu geführt, dass typeof null === "null".
Alle Konstruktorfunktionen, die mit new aufgerufen werden, geben Nicht-Primitives zurück ("object" oder "function"). Die meisten geben Objekte zurück, mit der bemerkenswerten Ausnahme der Function, die eine Funktion zurückgibt.
Der typeof Operator hat eine höhere Priorität als binäre Operatoren wie die Addition (+). Daher sind Klammern erforderlich, um den Typ eines Additionsresultats zu evaluieren.
typeof funktioniert mit nicht deklarierten Identifikatoren und gibt "undefined" zurück, anstatt einen Fehler zu werfen.
Die Verwendung von typeof bei lexikalischen Deklarationen (let const, using await using, und class) im selben Block vor der Deklarationsstelle wird jedoch einen ReferenceError werfen. Block-skopierte Variablen befinden sich in einer temporären Totzone vom Beginn des Blocks bis die Initialisierung verarbeitet ist; während dieser Zeit wird ein Fehler geworfen, wenn auf sie zugegriffen wird.
Siehe typeof Operator und undefined für weitere Details.
Alle aktuellen Browser legen ein nicht-standardisiertes Host-Objekt document.all mit dem Typ undefined offen.
Obwohl document.all auch falsy ist und lose gleich zu undefined, ist es nicht undefined. Der Fall, dass document.all den Typ "undefined" hat, wird in den Webstandards als eine "willkürliche Verletzung" des ursprünglichen ECMAScript-Standards für die Webkompatibilität klassifiziert.
typeof ist sehr nützlich, aber es ist nicht so vielseitig, wie es erforderlich sein könnte. Zum Beispiel ist typeof [] "object", ebenso wie typeof new Date(), typeof /abc/, usw.
Für größere Spezifität beim Überprüfen von Typen präsentieren wir hier eine benutzerdefinierte type(value) Funktion, die weitgehend das Verhalten von typeof nachahmt, aber für Nicht-Primitives (d.h. Objekte und Funktionen) einen spezifischeren Typnamen zurückgibt, wo möglich.
Zum Überprüfen potenziell nicht existierender Variablen, die sonst einen ReferenceError werfen würden, verwenden Sie typeof nonExistentVar === "undefined", da dieses Verhalten nicht mit benutzerdefiniertem Code nachgeahmt werden kann.
| ECMAScript® 2027 Language Specification # sec-typeof-operator |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.