Nullish coalescing-Zuweisung (??=)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.

Der Nullish coalescing-Zuweisungsoperator (??=), auch bekannt als logischer Nullish-Zuweisungsoperator, wertet nur den rechten Operanden aus und weist ihn dem linken Operanden zu, wenn dieser nullish ist (null oder undefined).

Probieren Sie es aus

const a = { duration: 50 };

a.speed ??= 25;
console.log(a.speed);
// Expected output: 25

a.duration ??= 10;
console.log(a.duration);
// Expected output: 50

Syntax

js
x ??= y

Beschreibung

Die Nullish coalescing-Zuweisung short-circuited, was bedeutet, dass x ??= y äquivalent zu x ?? (x = y) ist, mit der Ausnahme, dass der Ausdruck x nur einmal ausgewertet wird.

Es wird keine Zuweisung vorgenommen, wenn die linke Seite nicht nullish ist, aufgrund des Short-Circuiting des Nullish coalescing-Operators. Zum Beispiel wird der folgende Code keinen Fehler auslösen, obwohl x als const deklariert ist:

js
const x = 1;
x ??= 2;

Ebenso würde im folgenden Beispiel der Setter nicht ausgelöst:

js
const x = {
  get value() {
    return 1;
  },
  set value(v) {
    console.log("Setter called");
  },
};

x.value ??= 2;

Tatsächlich wird y überhaupt nicht ausgewertet, wenn x nicht nullish ist.

js
const x = 1;
x ??= console.log("y evaluated");
// Logs nothing

Beispiele

Verwendung der Nullish coalescing-Zuweisung

Sie können den Nullish coalescing-Zuweisungsoperator verwenden, um Standardwerte für Objekteigenschaften anzuwenden. Im Vergleich zur Verwendung von Destructuring und Standardwerten wendet ??= den Standardwert auch an, wenn die Eigenschaft den Wert null hat.

js
function config(options) {
  options.duration ??= 100;
  options.speed ??= 25;
  return options;
}

config({ duration: 125 }); // { duration: 125, speed: 25 }
config({}); // { duration: 100, speed: 25 }

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-assignment-operators

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch