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