Der Unterschied zwischen den Operatoren ?? und || in JavaScript

Beide Operatoren liefern den linken Wert zurück, wenn dieser „gültig“ ist. Diese Funktionsweise macht man sich in JavaScript häufig zu Nutze, um Default-Werte zu definieren:

let text = getText() || 'Der Text';
let hext = getHext() ?? 'Der Hext';

Der einzige Unterschied ist die Art der Überprüfung:

  • || prüft den linken Ausdruck auf alle falsy Werte, also zB.: 0, '', false, undefined, null oder NaN
  • ?? prüft den linken Ausdruck nur auf null oder undefined

Liefert der linke Ausdruck also kein dementsprechendes Ergebnis, wird der „Fallback“ verwendet.

Je nachdem, was der aktuelle Use Case verlangt, kann man die eine oder die andere Lösung verwenden.

Default-Werte bei Funktionen

Spricht man über Default-Werte in JavaScript, kann man diese auch für Funktionsparameter angeben, das aber seit dem ES6-Update (2015, wird in allen modernen Browsern unterstützt) auch direkt ohne Umweg und als Teil der Standardisierung:

function setText(text = 'Default') {
  ...
}