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.
Die globale Eigenschaft undefined repräsentiert den primitiven Wert undefined. Es ist einer der primitiven Typen von JavaScript.
Der primitive Wert undefined.
| Schreibbar | nein |
| Aufzählbar | nein |
| Konfigurierbar | nein |
undefined ist eine Eigenschaft des globalen Objekts. Das heißt, es ist eine Variable im globalen Gültigkeitsbereich.
In allen nicht veralteten Browsern ist undefined eine nicht konfigurierbare, nicht beschreibbare Eigenschaft. Auch wenn dies nicht der Fall ist, sollten Sie es vermeiden, es zu überschreiben.
Eine Variable, der kein Wert zugewiesen wurde, ist vom Typ undefined. Eine Funktion gibt undefined zurück, wenn kein Wert zurückgegeben wurde. Der Zugriff auf eine Eigenschaft, die nicht existiert, gibt ebenfalls undefined zurück. Der void-Operator gibt immer undefined zurück.
Hinweis: Während Sie undefined als Bezeichner (Variablenname) in jedem Gültigkeitsbereich außer dem globalen Gültigkeitsbereich verwenden können (da undefined kein reserviertes Wort ist), ist dies eine sehr schlechte Idee, die Ihren Code schwer wartbar und fehleranfällig macht.
Sie können undefined und die strikten Gleichheits- und Ungleichheitsoperatoren verwenden, um zu bestimmen, ob eine Variable einen Wert hat. Im folgenden Code ist die Variable x nicht initialisiert, und die if-Anweisung evaluiert zu wahr.
Hinweis: Der strikte Gleichheitsoperator (im Gegensatz zum lockeren Gleichheitsoperator) muss hier verwendet werden, da x == undefined auch überprüft, ob x null ist, während dies bei strikter Gleichheit nicht der Fall ist. Dies liegt daran, dass null nicht gleich undefined ist.
Siehe Gleichheitsvergleich und Gleichheit für Details.
typeof kann auch bestimmen, ob eine Variable undefined ist:
Ein Grund, typeof zu nutzen, ist, dass es keinen Fehler auslöst, wenn die Variable im aktuellen Gültigkeitsbereich nicht existiert.
Es funktioniert auch mit Variablen, die mit var nachdem die Prüfung erklärt wurden, da die Deklaration an die Spitze des Gültigkeitsbereichs mit dem Wert undefined gehoben wird.
Diese Technik ist normalerweise nur nützlich, um globale Variablen zu testen. Sie können wissen, ob eine Variable in jedem anderen Gültigkeitsbereich (Blöcke, Funktionen, Module, usw.) existiert, indem Sie einfach den Quellcode lesen. Der globale Gültigkeitsbereich ist an das globale Objekt gebunden, so dass die Existenz einer Variablen im globalen Kontext überprüft werden kann, indem die Existenz einer Eigenschaft auf dem globalen Objekt überprüft wird, z.B. durch den in-Operator:
Keiner der oben erwähnten Techniken funktioniert jedoch, wenn die Variable mit let, const oder anderen lexikalischen Deklarationen deklariert wird. Die Verwendung von typeof vor der Deklaration führt immer noch zu einem ReferenceError, aufgrund der Temporal Dead Zone (TDZ).
Darüber hinaus erstellen let und const-Deklarationen keine Eigenschaften auf dem globalen Objekt, so dass sie auch nicht mit dem in-Operator überprüft werden können.
Wenn Sie globale Variablen über verschiedene Skripte hinweg teilen möchten, ist es ratsamer, var zu verwenden oder sie explizit an das globale Objekt anzuhängen:
Der void-Operator kann auch verwendet werden, um den undefined-Wert zu erzeugen. Dies ist sehr häufig in komprimiertem Code zu sehen, da void 0 3 Bytes kürzer ist und nicht überschrieben werden kann. Sie sollten dieses Muster in Ihrem eigenen Code normalerweise vermeiden.
| ECMAScript® 2027 Language Specification # sec-undefined |
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.