JavaScriptにも論理和代入なんてあったんだ

対応状況

Ruby では昔から使ってたけど JavaScript では条件演算子などを使って処理していたものが、実はそんな必要なかった。

論理和代入 (||=) - JavaScript | MDN

実は2020年くらいから使えてる。

Safari 14 もイケるし、Node.js 15 もイケる。

ただし Google Apps Script の V8 runtime では使えない。

意味をおさらい

x ||= y

必要なら代入が行われる、なので以下と等価。

x || (x = y)

以下は絶対に代入が起きてしまうので等価ではない。

x = x || y

この

x || (x = y)

って、スッと思い出せないですね。つい

(type of x !== 'undefined') ? x : y

みたいにしちゃう。まぁ 0'' も取り得る値の場合にいちばん安全に動くので、それはそれで問題はないんだけど。

More