論理代入演算子


JavaScript(ES 2021)は、現在の演算子と論理演算と割り当てを結合する機能をサポートしています&&= , ||= , and ??= . 以前は、複合代入演算子は数学的でビット単位の操作でのみ可能でした.

論理と課題&&=論理と代入x &&= y 演算子はx 本当です.例えば、
let a = 1;
let b = 0;

a &&= 2;
console.log(a); // output: 2

b &&= 2;
console.log(b); // output: 0

短絡評価
左の式が虚偽であるならば、それは短絡評価されます、そして、右の式は評価されませんb が0であるので、再割り当てされません.a &&= 2a && (a = 2) , とa それが本来真実であったので、再契約されます.

論理OR課題||=論理和代入x ||= y 演算子はx 虚偽です.
const a = 50;
const b = '';

a ||= 10;
console.log(a);  // output: 50

b ||= 'string is empty.';
console.log(b); // output: "string is empty."

短絡評価
上の例からa ||= 10a || (a = 10) , しかし、値がa TRUEであれば、短絡され、右側の割り当ては評価されません.
空文字列や0などの値が偽の場合はチェックします.||= を使用する必要があります.それ以外の場合には、論理式の割り当て代入演算子を使用しなければなりません??= をチェックするのに使われるべきですnull or undefined 値.

論理的な割り当て??=論理的な割り当てx ??= y 演算子はx is null or undefined .
const a = { limt: 50 };

a.limit ??= 10;
console.log(a.limit); // output: 50

a.speed ??= 25;
console.log(a.speed); // output: 25

短絡評価
左側がどちらの場合も、論理式のない式式は左側の式に対して短絡されますnull nor undefined .
上記の例では、a.limit は値が50であるので定義されませんnull or undefined . a.speedundefined , したがって、右手の式は評価されますa.speed = 25 , そして今a = {limit: 50, speed: 25} .