Affectation après coalescence des nuls (??=)
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 }