メモログ

塵が積もって山とならないメモのログ

Logical AND/OR/Nullish assignment operators

ES.next Newsの9/1の回のメールにあったLogical assignment operators in JavaScriptについて。TypeScript 4.0 から利用可能

Logical AND assignment

Logical AND assignmentx &&= yと書く。xtruthyの場合にx = y が実行される。xfalsyの場合は、x = yの部分は評価されない(Short-circuit evaluation)。だからコード的には

1
x && (x = y)

と同じ処理であり、

1
x = x && y

とは異なる(この場合はアサインメントが必ず発生するので)

Logical OR assignment

Logical OR assignmentx ||= yと書く。xがfalsyの場合にx = yが実行される。xがtruthyの場合は、x = yの部分は評価されない。だからコード的には

1
x || (x = y)

と同じ処理であり、

1
x = x || y

とは異なる(この場合はアサインメントが必ず発生するので)

Logical nullish assignment

Logical nullish assignmentx ??= yと書く。xnullishの場合、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で試すことができる。

というメモ。