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 primitiven Datentypen von JavaScript.
Probieren Sie es aus
function test(t) {
if (t === undefined) {
return "Undefined value!";
}
return t;
}
let x;
console.log(test(x));
// Expected output: "Undefined value!"
Wert
Der primitive Wert undefined
.
Eigenschaften von undefined | |
---|---|
Schreibbar | nein |
Aufzählbar | nein |
Konfigurierbar | nein |
Beschreibung
undefined
ist eine Eigenschaft des globalen Objekts. Das bedeutet, dass es eine Variable im globalen Gültigkeitsbereich ist.
In allen nicht-veralteten Browsern ist undefined
eine nicht-konfigurierbare, nicht-beschreibbare Eigenschaft. Selbst wenn dies nicht der Fall ist, sollte eine Überschreibung vermieden werden.
Eine Variable, der kein Wert zugewiesen wurde, hat den Typ undefined
. Eine Methode oder Anweisung gibt ebenfalls undefined
zurück, wenn die Variable, die ausgewertet wird, keinen zugewiesenen Wert hat. Eine Funktion gibt undefined
zurück, wenn kein Wert zurückgegeben
wurde.
Hinweis:
Obwohl Sie undefined
als Bezeichner (Variablenname) in jedem Bereich außer dem globalen Bereich (weil undefined
kein reserviertes Wort ist) verwenden können, ist dies eine sehr schlechte Idee, die Ihren Code schwer wartbar und zu debuggen macht.
// MACHEN 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 ist die Variable x
nicht initialisiert, und die if
-Anweisung wertet zu wahr aus.
let x;
if (x === undefined) {
// these statements execute
} else {
// these statements do not execute
}
Hinweis:
Der strikte Gleichheitsoperator (im Gegensatz zum
standardmäßigen Gleichheitsoperator) muss hier verwendet werden, da
x == undefined
auch prüft, ob x
null
ist,
während strikte Gleichheit das nicht tut. Dies liegt daran, dass null
nicht gleich
undefined
ist.
Siehe Gleichheitsvergleiche 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 statisch gescoptete Sprache, daher kann festgestellt werden, ob eine Variable deklariert ist, indem geprüft wird, ob sie in einem umgebenden Kontext deklariert ist.
Der globale Gültigkeitsbereich ist an das globale Objekt gebunden, daher kann die Existenz einer Variablen im globalen Kontext überprüft werden, indem das Vorhandensein einer Eigenschaft am globalen Objekt mit dem in
-Operator überprüft wird, zum Beispiel:
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® 2025 Language Specification # sec-undefined |