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

js
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 » :

js
const x = 1;
x ??= 2;

Les éléments suivants ne déclencheront pas non plus le « setter » :

js
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é.

js
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.

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

Voir aussi