Affectation après coalescence des nuls (??=)
L'opérateur d'affectation après coalescence des nuls (x ??= y
) effectue une affectation uniquement si l'opérande de gauche (x
) vaut null
ou undefined
.
Exemple interactif
Syntaxe
js
expr1 ??= expr2;
Description
Évaluation en court-circuit
L'opérateur de coalescence des nuls est évalué de gauche à droite et le moteur teste s'il est possible d'utiliser un court-circuit grâce à la règle suivante :
(une expression qui renvoie null ou undefined) ?? expr
sera court-circuité pour fournir l'opérande gauche si celle-ci ne vaut ni null
ni undefined
.
Ce « court-circuit » implique que l'expression expr
n'est pas évaluée si ce n'est pas nécessaire. Ainsi, tout effet de bord lié à celle-ci n'aura pas lieu (par exemple, si expr
appelle une fonction, cette dernière n'est pas exécutée).
L'opérateur d'affectation après coalescence des nuls obéit également à cette logique. Ainsi, x ??= y
sera équivalent à :
js
x ?? (x = y);
En revanche, ce ne sera pas équivalent à l'expression suivante qui effectue une affectation quoi qu'il arrive :
js
x = x ?? y;
Exemples
Utiliser l'opérateur d'affectation après coalescence des nuls
js
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