【Javascript】暗黙の型変換でブーリアン型のfalseに置き換わる値まとめ。

if文やwhile文といった条件式で暗黙の型変換が行われる際、falseとして評価されるものは以下の通り。

・数値0
・数値NaN
・null値
・undefined値
・空白文字列”

上記以外の値は全てtrueとなる。
また、ブーリアン型への変換時にもイディオムが存在し「!」演算子を用いることで実現している。
!演算はブーリアン型のオペランドに対する論理否定演算なため、評価対象がブーリアン型でなければ、上記のルールに則り暗黙の型変換が行われる。
そのため!演算を二つ重ね!!とする事で否定の否定となり、最終的にブーリアン型への変換機能だけが残るのである。

> !1;
false

> !!1;
true

> !!'a';
true

> !!'0';
true

> !!0;
false

> !!'';
false

> !!null;
false

といった具合。
またブーリアン型への型変換で注意すべきポイントとして、オブジェクト型の評価結果がある。
オブジェクト型をブーリアン型に変換すると必ずtureを返却するため、下記のようなコードであってもtrueが返却されるので注意されたし。

> var bool = new Boolean(false);
  !!bool;

true

ここでいうboolはBooleanクラスのインスタンス(オブジェクト)であるため、変換結果はtrueとなる(中身はfalse)。
※厳密に言うとJSにクラスは存在しないが言語仕様上の破綻は起こらないため、便宜上クラスという文言を用いた。