null und undefined – Abwesenheit sinnvoller Werte

null und undefined sind spezielle Werte, mit denen das Skript auf das Fehlen von Werten, auf leere oder undefinierte Variablen prüft.

null und undefined

Gibts nicht geht nicht: Wenn Werte oder Eigenschaften nicht existieren

Die speziellen Werte null und undefined kennzeichnen die Abwesenheit sinnvoller Werte. Sie sind zwar selber Werte, aber sie enthalten keine Informationen. Sie werden eingesetzt, wenn Operationen keinen Wert liefern könnten, aber einen Wert haben müssen.

Beides wird eingesetzt, um auf fehlende Werte zu reagieren, aber ihr Verhalten weist feine Unterschiede auf: null wird eher bewusst zugewiesen, undefined von JavaScript erzeugt. In booleschen Ausdrücken gelten null und undefined als falsy (ein Wert ist falsy, wenn er sich in einem booleschen Kontext (if, &&, ||, !) wie false verhält).

undefined: existiert, aber hat keinen sinnvollen Wert

let foo;
console.log ("foo", foo);

JavaScript weist einer Variable, die mit let ohne Wertzuweisung definiert ist, den Wert undefined zu. Das Skript wirft keine Fehlermeldung aus.


[Log] foo – undefined 

Ihre Benutzung führt nicht zu Laufzeitfehlern, aber zu unbrauchbaren Ergebnissen. Hingegen führt die Benutzung einer Variablen, die nicht deklariert wurde, zu einem Laufzeitfehler:

console.log (bar);

[Error] ReferenceError: Can't find variable: bar

null – mit Absicht gesetzt

null wird einer Variablen absichtlich zugewiesen, um explizit zu kennzeichnen, dass sie derzeit kein Objekt bzw. keine Information enthält. So kann später eindeutig geprüft werden, ob ein Wert bewusst »leer« ist oder eine Variable nie initialisiert wurde. Vor Aktionen auf einem DOM-Element wird geprüft, ob die Variable ungleich null ist, um sicherzustellen, dass das Element existiert.

let elem = null;
elem = document.querySelector('.selector');

if (elem !== null) {
  elem.classList.add('active');
} else {
  console.warn('Element .selector nicht gefunden');
}

elem ist entweder:

  • ein Element
  • oder bewusst null

Die moderne Kurzform (Optional Chaining) lautet:

document.querySelector('.selector')?.classList.add('active');

Die Aktion wird nur ausgeführt, wenn das Element existiert, und dabei ist kein Extra if erforderlich.

Optional Chaining (?.) ist ein JavaScript-Operator, der sicher auf Eigenschaften, Methoden oder Indizes zugreifen kann, ohne dass ein Fehler entsteht, wenn ein Teil der Kette null oder undefined ist.

Ohne Optional Chaining:

const user = null;

console.log(user.name);
// TypeError: Cannot read properties of null

Mit Optional Chaining: Wenn links von ?. null oder undefined steht, wird der ganze Ausdruck sofort zu undefined ausgewertet.

console.log(user?.name);
// undefined (kein Fehler)

So werden Methoden nur aufgerufen, wenn sie existieren:

button?.addEventListener('click', handler);

Und der Zugriff auf ein Array wird nur durchgeführt, wenn das Array existiert:

items?.[0]

Wichtig: Optional Chaining schützt NICHT vor ReferenceError, sondern funktioniert nur, wenn die Variable existiert, aber null oder undefined ist.

Suchen auf mediaevent.de