Nullish coalescing assignment (??=)
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 Assignment (??=)-Operator, auch bekannt als Logical Nullish Assignment-Operator, wertet nur den rechten Operanden aus und weist dem linken Operanden zu, wenn der linke Operand nullish (null oder undefined) ist.
Probieren Sie es aus
Syntax
x ??= y
Beschreibung
Der Nullish Coalescing Assignment-Operator verwendet Short-Circuiting, was bedeutet, dass x ??= y gleichbedeutend mit x ?? (x = y) ist, außer 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 wirft das folgende keinen Fehler, obwohl x eine const ist:
const x = 1;
x ??= 2;
Auch würde das Folgende den Setter nicht auslösen:
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.
const x = 1;
x ??= console.log("y evaluated");
// Logs nothing
Beispiele
Verwendung von Nullish Coalescing Assignment
Sie können den Nullish Coalescing Assignment-Operator verwenden, um Standardwerte auf Objekteigenschaften anzuwenden. Im Vergleich zur Verwendung von Destructuring und Standardwerten gilt ??= auch, wenn die Eigenschaft den Wert null hat.
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 Language Specification # sec-assignment-operators |
Browser-Kompatibilität
BCD tables only load in the browser