まとめ
- JS: True
- Python: False
経緯
JSで以下のようなコードを書いたら、arrが空のArrayの場合でもif文の中に入ってこないことに気づいた。
# arrはArray if (!arr) { console.log("arr is empty."); }
Pythonでは空のlistはFalseになるので、検証してみたところ、やはりJSはTrueだった。
・JS
$ node Welcome to Node.js v15.5.0. Type ".help" for more information. > Boolean([]) true
$ python3 Python 3.7.3 (default, Apr 7 2020, 14:06:47) [Clang 11.0.3 (clang-1103.0.32.59)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> bool([]) False
従って、JSの場合は以下のように書かないといけない。(arrがnullを許可していない前提)
# arrはArray if (arr.length === 0) { console.log("arr is empty."); }
言われてみれば、昔JQueryとか書いてたときに、Arrayのemptyチェックは上のように書いていた気がする。
ここ1年くらいPythonばっかりやってたから、感覚がPythonで上書きされていたのかもしれない。
言語によって真偽値の仕様って微妙に異なるんだなと勉強になった。