Null 合体代入 (??=)

Null 合体代入 (x ??= y) 演算子は、xnullish (null または undefined) である場合にのみ代入を行います。

構文

expr1 ??= expr2

解説

短絡評価 (ショートサーキット)

Null 合体演算子は左から右に評価され、次のルールを使って短絡評価の可能性があるかどうかテストされます。

(null や undefined ではない式) ?? expr は、左辺が null でも undefined でもないことが証明されたら、左辺の式が短絡評価されます。

短絡評価とは、上記の expr 部分が評価されないことを意味します。したがって、評価された場合の副作用は発生しません (例えば、expr が関数呼び出しである場合、呼び出しは行われません)。

Null 合体代入も短絡評価されます。これは、x ??= y が以下と等価であることを意味します。

x ?? (x = y);

そして、常に代入が行われる以下と等価ではありません。

x = x ?? y;

Null 合体代入演算子の使用

function config(options) {
  options.duration ??= 100;
  options.speed ??= 25;
  return options;
}

config({ duration: 125 }); // { duration: 125, speed: 25 }
config({}); // { duration: 100, speed: 25 }

Specifications

Specification
ECMAScript Language Specification (ECMAScript)
# sec-assignment-operators

Browser compatibility

BCD tables only load in the browser

See also