Affectation après coalescence des nuls (??=)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.

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

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® 2025 Language Specification
# sec-assignment-operators

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Nullish coalescing assignment (x ??= y)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi