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
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 Language Specification # sec-assignment-operators |
Compatibilité des navigateurs
BCD tables only load in the browser