メモログ

💡 Personal notes about anything I'm interested in

Logical AND/OR/Nullish assignment operators

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で試すことができる。

というメモ。