Boolean

Boolean オブジェクトは論理値のオブジェクトラッパーです。

解説

最初の引数に渡された値は、必要に応じて論理値に変換されます。値が省略された場合や、値が 0, -0, null, false, NaN, undefined, 空文字列 ("") であった場合、オブジェクトは false の初期値を持ちます。それ以外のあらゆる値は、オブジェクトや空の配列 ([])、"false" という文字列も含めて、 true の初期値を持つオブジェクトを生成します。

プリミティブBoolean 値である truefalse を、 truefalse の値を持った Boolean オブジェクトと混同しないでください。

その値が undefinednull でないオブジェクトはすべてBoolean オブジェクトの値が false である場合も含めて、条件文に渡されるとすべて true に評価されます。例えば、以下の if 文の条件は true に評価されます。

var x = new Boolean(false);
if (x) {
  // このコードは実行されます。
}

この振る舞いは Boolean プリミティブには適用されません。例えば、以下の if 文の条件は false に評価されます。

var x = false;
if (x) {
  // このコードは実行されません
}

Boolean オブジェクトを論理値でない値から論理値への変換に使わないでください。代わりに、 Boolean を関数として使ったり、二重否定演算子を使用したりすることで同じことが行えます。

var x = Boolean(expression);     // こちらを使うか...
var x = !!(expression);          // ...こちらを使ってください
var x = new Boolean(expression); // これは使わないでください!

Boolean オブジェクトの初期値としてオブジェクトを指定した場合、それが値が falseBoolean オブジェクトであっても、新しい Boolean オブジェクトは true の値を持ちます。

var myFalse = new Boolean(false);   // 初期値は false
var g = Boolean(myFalse);       // 初期値は true
var myString = new String('Hello'); // 文字列オブジェクト
var s = Boolean(myString);      // 初期値は true

Boolean プリミティブの代わりに Boolean オブジェクト使用しないでください。

Note: 標準外の document.all プロパティがこのコンストラクターの引数として使用された場合、結果は Boolean オブジェクトで値は false となります。このプロパティは古く、標準外で、使用するべきではありません。

== を使用して緩い比較でオブジェクトと boolean プリミティブを比較した場合、実際にはどのように比較が行われるのかを明確に理解することが重要です。以下の例を考えてみてください。

if ([]) { console.log("[] is truthy")}         // "[] is truthy" と出力
if ([] == false) { console.log("[] == false")} // "[] == false" と出力

[] が真値であるにもかかわらず [] == false となるのは、 [] == false[]false を比較するからです。そして、 []を取得するために、 JavaScript エンジンはまず [].toString() を呼び出します。これは "" を返すので、これが実際に false と比較されます。言い換えれば、 [] == false"" == false と同じです。そして、 "" は偽値です。ということで、この例の動作はこれで説明できます。

コンストラクター

Boolean()

新しい Boolean オブジェクトを生成します。

インスタンスメソッド

Boolean.prototype.toString()

このオブジェクトの値に応じて、文字列で true または false のどちらかを返します。 Object.prototype.toString() メソッドを上書きします。

Boolean.prototype.valueOf()

Boolean オブジェクトのプリミティブ値を返します。 Object.prototype.valueOf() メソッドを上書きします。

Boolean オブジェクトを初期値 false で生成

var bNoParam = new Boolean();
var bZero = new Boolean(0);
var bNull = new Boolean(null);
var bEmptyString = new Boolean('');
var bfalse = new Boolean(false);

Boolean オブジェクトを初期値 true で生成

var btrue = new Boolean(true);
var btrueString = new Boolean('true');
var bfalseString = new Boolean('false');
var bSuLin = new Boolean('Su Lin');
var bArrayProto = new Boolean([]);
var bObjProto = new Boolean({});

仕様書

Specification
ECMAScript Language Specification
# sec-boolean-objects

ブラウザーの互換性

BCD tables only load in the browser

関連情報