potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

JavaScript new Boolean(false) === true

JavaScriptには論理型(boolean)のオブジェクトラッパーであるBooleanクラスが存在しており、プリミティブ型のbooleanとは異なる動作をします。Booleanクラスのインスタンスは保持する値に関わらずtrulyです。

console.log(new Boolean(false) === false) // false
console.log(new Boolean(false) === true)  // true

// あるいは
console.log(Boolean(new Boolean(false))) // true

Booleanクラスからプリミティブ型のBooleanを取り出すにはvalueOfメソッドを使います。

console.log(new Boolean(true).valueOf());  // true
console.log(new Boolean(false).valueOf()); // false

なお、newなしでBoolean(...)と書いた場合はBoolean関数が呼び出されます。この関数はプリミティブ型の値true/falseを返します。

console.log(Boolean(""))      // false
console.log(Boolean("truly")) // true

関連リンク