Start · Sprachen · JavaScript · Referenz · undefined

undefined

Eigenschaft

Die globale Eigenschaft <code>undefined</code> repräsentiert den primitiven Wert <code>undefined</code> — den Standardwert nicht initialisierter Variablen.

seit JavaScript ES1 Kategorie: core

Signatur

undefined

Beschreibung

undefined ist eine globale Eigenschaft, die den primitiven Typ undefined enthält. Es handelt sich um einen der sieben primitiven Datentypen in JavaScript. Eine Variable, der kein Wert zugewiesen wurde, hat automatisch den Wert undefined. Ebenso geben Funktionen ohne explizites return-Statement, fehlende Funktionsparameter sowie der Zugriff auf nicht vorhandene Objekteigenschaften undefined zurück.

Seit ES5 ist undefined eine nicht-beschreibbare, nicht-konfigurierbare und nicht-aufzählbare Eigenschaft des globalen Objekts. In älteren Browsern (vor ES5) war sie theoretisch überschreibbar, was zu schwer auffindbaren Bugs führen konnte. In modernem JavaScript ist dieses Risiko beseitigt.

Um zu prüfen, ob ein Wert undefined ist, empfiehlt sich der typeof-Operator (typeof x === "undefined") oder ein strenger Vergleich mit === (x === undefined). Der lose Vergleich mit == sollte vermieden werden, da er auch null als gleich wertet (nullish equality). Für moderne Anwendungsfälle – etwa optionale Objekteigenschaften – bieten sich auch der Nullish-Coalescing-Operator (??) und das Optional Chaining (?.) an.

  • Nicht initialisierte Variable: let x; // x === undefined
  • Fehlender Parameter: function f(a) { return a; } f(); // undefined
  • Fehlende Objekteigenschaft: ({}).name // undefined
  • Kein Rückgabewert: const fn = () => {}; fn(); // undefined

Rückgabewert

Typ
undefined
Beschreibung
Der primitive Wert undefined.

Beispiele

Grundlegende Verwendung und Typ-Prüfung

// Nicht initialisierte Variable
let x;
console.log(x);              // undefined
console.log(x === undefined); // true
console.log(typeof x);        // "undefined"

// Fehlender Funktionsparameter
const greet = (name) => `Hallo, ${name}!`;
console.log(greet());         // "Hallo, undefined!"

// Fehlende Objekteigenschaft
const user = { vorname: "Ada" };
console.log(user.nachname);   // undefined
undefined true "undefined" "Hallo, undefined!" undefined

Sicherer Umgang mit undefined in der Praxis

// Standardwert per Nullish Coalescing
const config = {};
const timeout = config.timeout ?? 3000;
console.log(timeout); // 3000

// Optional Chaining verhindert Fehler bei tief verschachtelten Objekten
const response = { data: null };
console.log(response?.data?.items); // undefined (kein Fehler)

// typeof-Prüfung ist sicher, auch wenn die Variable nie deklariert wurde
if (typeof myGlobalFlag === "undefined") {
  console.log("myGlobalFlag ist nicht definiert");
}

// Funktion mit explizitem undefined-Fallback
const parseNumber = (value) => {
  const n = Number(value);
  return Number.isNaN(n) ? undefined : n;
};
console.log(parseNumber("42"));  // 42
console.log(parseNumber("abc")); // undefined
3000 undefined "myGlobalFlag ist nicht definiert" 42 undefined

// Wichtig · Fallstricke

Nicht mit null verwechseln: null ist ein bewusst gesetzter leerer Wert, während undefined das Fehlen eines Werts anzeigt. Der strikte Vergleich null === undefined ergibt false; der lose Vergleich null == undefined ergibt hingegen true.

Variablen explizit auf undefined setzen ist möglich, gilt aber als schlechter Stil — null ist für diesen Zweck semantisch klarer. Die Eigenschaft undefined selbst ist seit ES5 schreibgeschützt und kann nicht versehentlich überschrieben werden.

JSON-Serialisierung: JSON.stringify lässt Werte des Typs undefined (in Objekteigenschaften und Arrays) aus bzw. wandelt sie in null um. Dies kann bei der API-Kommunikation zu unerwartetem Verhalten führen.