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 der undefined-Property
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.

js
// 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.

js
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:

js
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.

js
// 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:

js
if ("x" in window) {
  // These statements execute only if x is defined globally
}

void Operator und undefined

Der void Operator ist eine dritte Alternative.

js
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

Siehe auch