質問: false && []) { console.log("True"); } else { console.log("False"); } ``` なぜ実行結果が **True** になるのでしょうか? 内部的にはどのように評価されているのでしょう?
回答: `==`と`&&`だと`==`の優先度が高いので、`[] == false`がまず評価され、その結果と`[]`との論理積が計算されます。 論理演算において`[]`はtrueになるので、あとは`[] == false`がtrueになればいいわけですが、これは以下の様に評価されます。 1. falseが+0に変換される: `[] == +0` 2. `[]`が`toString()`により空文字列に変換される: `"" == +0` 3. 空文字列が数値に変換される(i.e. `Number("")`): `0 == +0` 4. オペランドがともに0なのでtrueに評価される。