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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Nullish coalescing assignment (x ??= y)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch