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
も ''
も取り得る値の場合にいちばん安全に動くので、それはそれで問題はないんだけど。