Affectation après coalescence des nuls (??=)
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.
L'opérateur d'affectation de coalescence des nuls (??=
), également connu sous le nom d'opérateur affectation logique nulle, évalue uniquement l'opérande de droite et l'attribue à gauche si l'opérande de gauche est nulle (null
ou undefined
).
Exemple interactif
const a = { duration: 50 };
a.speed ??= 25;
console.log(a.speed);
// Expected output: 25
a.duration ??= 10;
console.log(a.duration);
// Expected output: 50
Syntaxe
x ??= y
Description
L'opérateur de coalescence des nuls est un court-circuit, ce qui signifie que x ??= y
est équivalent à x ?? (x = y)
, sauf que l'expression x
n'est évaluée qu'une seule fois.
Aucune affectation n'est effectuée si le côté gauche n'est pas nul, en raison d'un court-circuit de l'opérateur de coalescence des nuls. Par exemple, ce qui suit ne génère pas d'erreur, bien que « x » soit une constante « const » :
const x = 1;
x ??= 2;
Les éléments suivants ne déclencheront pas non plus le « setter » :
const x = {
get value() {
return 1;
},
set value(v) {
console.log("Assignation appelée");
},
};
x.value ??= 2;
En fait, si « x » n'est pas nul, « y » n'est pas du tout évalué.
const x = 1;
x ??= console.log("y est évalué");
// Ne génère pas de sortie
Exemple
Utiliser l'opérateur d'affectation après coalescence des nuls
Vous pouvez utiliser l'opérateur d'affectation de coalescence des nuls pour appliquer des valeurs par défaut aux propriétés d'objet. Par rapport à l'utilisation de la déstructuration et des valeurs par défaut, ??=
applique également la valeur par défaut si la propriété a pour valeur null
.
function config(options) {
options.duration ??= 100;
options.speed ??= 25;
return options;
}
config({ duration: 125 }); // { duration: 125, speed: 25 }
config({}); // { duration: 100, speed: 25 }
Spécifications
Specification |
---|
ECMAScript® 2025 Language Specification # sec-assignment-operators |
Compatibilité des navigateurs
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nullish coalescing assignment ( x ??= y ) |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support