potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

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

関連リンク