→
x が nullish(null または undefined)である場合にのみ代入を行います。
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を表示