Boolean()は、真偽オブジェクトを作成します。
引数に文字列などを指定すると true を初期値とするオブジェクトを作成します。
引数を省略するか、引数に 0, -0, null, false, NaN, undefined, 空文字(””) を指定すると false を初期値とするオブジェクトを作成します。
通常、if文の分岐で特に意識しないで true / false を使用する場合、プリミティブ型の真偽値を使用している可能性が高いでしょう。
一方、new Boolean()を使用して作成するのは真偽値のラッパーオブジェクトです。
プリミティブ型の真偽値とは値のタイプが異なる点に注意してください。
<script> var x = false; //プリミティブ型の真偽値 var y = new Boolean(false); //真偽オブジェクト // x と y を書き出せば、どちらも false となる document.write("x:" + x + "<br>"); document.write("y:" + y + "<br>"); // x と y は同じ値なので、(x == y)の結果はyesとなる if (x == y) { document.write("yes<br>"); } else { document.write("no<br>"); } // x と y は値のタイプが異なるので、(x === y)の結果はnoとなる if (x === y) { document.write("yes<br>"); } else { document.write("no<br>"); } </script>
上記の例のように、プリミティブ型の真偽値と、newステートメントを使用して真偽オブジェクトを比較する場合には注意が必要です。
この紛らわしさを回避するために、以下のように Boolean() を関数として使用しても良いでしょう。
var y = new Boolean(); //真偽オブジェクトを作成 var z = Boolean(); //関数として使用
以下の使用例では、オブジェクトを作成する際のnewステートメントを使用していません。
<script> function check() { var v = document.form1.input1.value; var blObj = Boolean(v); if (blObj===true) { alert("記入あり"); } else { alert("記入なし"); } } </script> <form name="form1"> <input type="text" name="input1"> <input type="button" value="未記入チェック" onClick="check()"> </form>