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 Primitive darstellt, dessen Typ zurückgegeben werden soll.
Die folgende Tabelle fasst die möglichen Rückgabewerte von typeof zusammen. Weitere Informationen zu Typen und Primitives finden Sie auch auf der Seite JavaScript-Datenstrukturen.
| Undefined | "undefined" |
| Null | "object" (Grund) |
| Boolean | "boolean" |
| Number | "number" |
| BigInt | "bigint" |
| String | "string" |
| Symbol | "symbol" |
| Function (implementiert [[Call]] in ECMA-262-Begriffen; Klassen sind ebenfalls Funktionen) | "function" |
| Jedes andere Objekt | "object" |
Diese Liste von Werten ist vollständig. Es sind keine spezifikationskonformen Engines bekannt, die Werte produzieren (oder historisch produziert haben), die von diesen abweichen.
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 dargestellt (0x00 auf den meisten Plattformen). Folglich hatte null 0 als Typ-Tag, daher der typeof Rückgabewert "object". (Referenz)
Ein Fix wurde für ECMAScript vorgeschlagen (über ein Opt-in), aber wurde abgelehnt. Es hätte resultiert in typeof null === "null".
Alle Konstruktorfunktionen, die mit new aufgerufen werden, werden nicht-primitives zurückgeben ("object" oder "function"). Die meisten geben Objekte zurück, mit der bemerkenswerten Ausnahme Function, die eine Funktion zurückgibt.
Der typeof Operator hat höhere Priorität als binäre Operatoren wie die Addition (+). Daher sind Klammern erforderlich, um den Typ des Additionsergebnisses zu bewerten.
typeof funktioniert mit nicht deklarierten Identifikatoren und gibt "undefined" zurück, anstatt einen Fehler zu werfen.
Jedoch wird der Einsatz von typeof auf lexikalischen Deklarationen (let const, using await using, und class) im selben Block vor der Deklaration eine ReferenceError auslösen. Blockgebundene Variablen befinden sich in einer zeitlichen Sperrzone vom Beginn des Blocks bis die Initialisierung verarbeitet wird, währenddessen ein Fehler geworfen wird, wenn sie aufgerufen werden.
Siehe typeof Operator und undefined für weitere Details.
Alle aktuellen Browser stellen ein nicht-standardisiertes Host-Objekt document.all mit dem Typ undefined bereit.
Obwohl document.all ebenfalls falsy und losely equal zu undefined ist, ist es nicht undefined. Der Fall, dass document.all den Typ "undefined" hat, wird in den Webstandards als "willkürlicher Bruch" der ursprünglichen ECMAScript-Spezifikation für die Webkompatibilität klassifiziert.
typeof ist sehr nützlich, aber es ist vielleicht nicht so vielseitig wie erforderlich. Zum Beispiel ist typeof [] "object", ebenso wie typeof new Date(), typeof /abc/, etc.
Für mehr Spezifität bei der Überprüfung von Typen präsentieren wir hier eine benutzerdefinierte Funktion type(value), die größtenteils das Verhalten von typeof nachahmt, aber für nicht-primitives (d.h. Objekte und Funktionen) einen spezifischeren Typennamen zurückgibt, wo möglich.
Um potenziell nicht vorhandene Variablen zu überprüfen, die sonst einen ReferenceError auslösen 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.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.