15.2Comparison Operators & Equality / Coercion Rules

`if`文の型変換ルール

`if`文は`ToBoolean`抽象メソッドを使用して式を評価します。オブジェクトはtrueundefined/nullはfalse空文字列はfalseと評価されます。

JavaScriptでは `false`, `0`, `''`, `null`, `undefined`, `NaN` の6つが「falsy」な値として扱われ、それ以外はすべて「truthy」な値です。注意すべきは、空の配列 `[]` や空のオブジェクト `{}` はオブジェクトなので truthy となる点です。このルールを理解することで、条件分岐を簡潔に書くことができます。

❌ Bad
if (new Boolean(false)) { 
  // this code runs, because new Boolean() creates an object which is truthy
}
✅ Good
if ([0] && []) {
  // true
  // an array (even an empty one) is an object, objects will evaluate to true
}