JavaScript

Null合体代入演算子「??=」

 編集:2022.08.07 by T.A.

x が nullish(null または undefined)である場合にのみ代入を行います。

X ??= Y
X 式1。
Y 式2。
短絡評価(ショートサーキット)

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

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

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

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

x ?? (x = y);

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

x = x ?? y;
function Test(Arg) {
  Arg.Prop1 ??= 100;
  Arg.Prop2 ??= 25;
  return Arg;
}

Test({ Prop1:125 });	// { Prop1:125, Prop2:25 }
Test({});	// { Prop1:100, Prop2:25 }
D=null;
alert(D ??= 10);	//D=10、Dを表示
D=undefined;
alert(D ??= 10);	//D=10、Dを表示
D=false;
alert(D ??= 10);	//D=false、Dを表示

テスト