ES.next Newsの 9/1 の回のメールにあったLogical assignment operators in JavaScriptについて。TypeScript 4.0 から利用可能。
Logical AND assignment
Logical AND assignmentはx &&= yと書く。xがtruthyの場合にx = y が実行される。xがfalsyの場合は、x = yの部分は評価されない(Short-circuit evaluation)。だからコード的には
x && (x = y);
と同じ処理であり、
x = x && y;
とは異なる(この場合はアサインメントが必ず発生するので)
Logical OR assignment
Logical OR assignmentはx ||= yと書く。xが falsy の場合にx = yが実行される。xが truthy の場合は、x = yの部分は評価されない。だからコード的には
x || (x = y);
と同じ処理であり、
x = x || y;
とは異なる(この場合はアサインメントが必ず発生するので)
Logical nullish assignment
Logical nullish assignmentはx ??= yと書く。xがnullishの場合、x = yが実行される。xが nullish でなければ、x = yの部分は評価されない。
x ?? (x = y);
と同じであり、
x = x ?? y;
とは異なる
サポート状況
これら Logical assignments の対応状況はECMAScript compatible tableを参照すると、すべてのブラウザ(IE11 以外)で対応直近という感じにある。IE11 が使えないとどうしてもそのままでは使えないが、TypeScript では 4.0 でこれらの transpile をサポートしており利用することができる。Playgroundで試すことができる。
というメモ。