undefined
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die undefined
globale Eigenschaft repräsentiert den primitiven Wert undefined
. Es ist einer der JavaScript primitiven Typen.
Probieren Sie es aus
Wert
Der primitive Wert undefined
.
Eigenschaften von undefined | |
---|---|
Schreibbar | nein |
Aufzählbar | nein |
Konfigurierbar | nein |
Beschreibung
undefined
ist eine Eigenschaft des globalen Objekts. Das heißt, es ist eine Variable im globalen Scope.
In allen nicht-veralteten Browsern ist undefined
eine nicht-konfigurierbare, nicht beschreibbare Eigenschaft. Auch wenn dies nicht der Fall ist, vermeiden Sie, es zu überschreiben.
Eine Variable, der kein Wert zugewiesen wurde, hat den Typ undefined
. Auch eine Methode oder Anweisung gibt undefined
zurück, wenn die zu evaluierende Variable keinen zugewiesenen Wert hat. Eine Funktion gibt undefined
zurück, wenn kein Wert zurückgegeben
wurde.
Hinweis:
Auch wenn Sie undefined
als Bezeichner (Variablenname) in jedem anderen Scope als dem globalen Scope verwenden können (weil undefined
kein reserviertes Wort ist), ist dies eine sehr schlechte Idee, die Ihren Code schwer wartbar und schwer debugbar macht.
// TUN SIE DAS NICHT
(() => {
const undefined = "foo";
console.log(undefined, typeof undefined); // foo string
})();
((undefined) => {
console.log(undefined, typeof undefined); // foo string
})("foo");
Beispiele
Strikte Gleichheit und undefined
Sie können undefined
und die strikten Gleichheits- und Ungleichheitsoperatoren verwenden, um festzustellen, ob eine Variable einen Wert hat. Im folgenden Code wird die Variable x
nicht initialisiert und die if
-Anweisung wird zu true ausgewertet.
let x;
if (x === undefined) {
// these statements execute
} else {
// these statements do not execute
}
Hinweis:
Hier muss der strikte Gleichheitsoperator (im Gegensatz zum Standard-Gleichheitsoperator) verwendet werden, da x == undefined
auch prüft, ob x
null
ist, während strikte Gleichheit dies nicht tut. Dies liegt daran, dass null
nicht gleich undefined
ist.
Siehe Gleichheitsvergleich und Gleichheit für Details.
typeof Operator und undefined
Alternativ kann typeof
verwendet werden:
let x;
if (typeof x === "undefined") {
// these statements execute
}
Ein Grund, typeof
zu verwenden, ist, dass es keinen Fehler auslöst, wenn die Variable nicht deklariert wurde.
// x has not been declared before
// evaluates to true without errors
if (typeof x === "undefined") {
// these statements execute
}
// Throws a ReferenceError
if (x === undefined) {
}
Es gibt jedoch eine weitere Alternative. JavaScript ist eine Sprache mit statischem Scope, daher kann durch Überprüfung, ob die Variable in einem umgebenden Kontext deklariert wurde, festgestellt werden, ob sie deklariert ist.
Der globale Umfang ist an das globale Objekt gebunden, daher kann die Existenz einer Variablen im globalen Kontext durch Überprüfung der Existenz einer Eigenschaft am globalen Objekt überprüft werden, zum Beispiel mit dem in
Operator:
if ("x" in window) {
// These statements execute only if x is defined globally
}
void Operator und undefined
Der void
Operator ist eine dritte Alternative.
let x;
if (x === void 0) {
// these statements execute
}
// y has not been declared before
if (y === void 0) {
// throws Uncaught ReferenceError: y is not defined
}
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-undefined |
Browser-Kompatibilität
BCD tables only load in the browser