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

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 à :

x ?? (x = y);

En revanche, ce ne sera pas équivalent à l'expression suivante qui effectue une affectation quoi qu'il arrive :

x = x ?? y;

Exemples

Utiliser l'opérateur d'affectation après coalescence des nuls

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

Voir aussi