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
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

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.

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

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

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

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® 2025 Language Specification
# sec-undefined

Browser-Kompatibilität

Siehe auch