Boolean オブジェクトは、真理値を表すプリミティブ boolean のラッパーオブジェクトです。
__TOC__
JavaScriptにおける真理値は、真をtrue、偽をfalseという2つの値で表します。0 < 1（0は1より小さい）という比較結果はtrueであり、0 > 1（0は1より大きい）という比較結果はfalseです。
console.log( 0 < 1 ); // true
console.log( 0 > 1 ); // false
論理演算子は必ずtrueまたはfalseの真理値を返します。さらに数値や文字列、関数などあらゆるオブジェクトは、trueとfalseのいずれかの真理値に変換することができます。true自身の真理値はtrue、false自身の真理値はfalseであると約束されています。
ほとんどのものはtrueですが、数値の0 (-0) や空文字列 ""、NaN、null、undefinedなどはfalseです。
BooleanオブジェクトはJavaScriptのプリミティブな真理値をラップします。何らかの値をBooleanオブジェクト（真理値）に変換するには、Booleanを関数として呼び出します。このとき返す値は false または true で typeof は "boolean" です。他方、new を付けてコンストラクタとして呼び出すと返す値の typeof は "object" となりBooleanラッパーオブジェクトです。 
const bool = Boolean("abc");
console.log(bool); // true
あるいは論理否定演算子!を使用することで、値を強制的にBooleanオブジェクトに変換することができます。
const bool = !!"abc";
console.log(bool); // true
!!の方が簡潔だという人もいれば、Boolean関数の方がわかりやすいという人もいるでしょう。
if文の条件式に渡されたオブジェクトは、自動的に真理値に変換されます。このように、暗黙に真理値に変換される文脈は、ブーリアンコンテキストとよばれます。
ブーリアンコンテキストで false に変換される値を falsy な値と呼びます。
falsyな値
ブーリアンコンテキストで true に変換される値を truthy な値と呼びます。
ブーリアンコンテキストでは true/false の2値しか取りえないので、値集合の中で falsy とは補集合の関係にあります。
const ary = [undefined, null, false, true, 0, 1, "", "1", [], [2]]
const json = ary.map(x => x === undefined ? "undefined" : JSON.stringify(x))
let s = ""
s += ``
console.log(s)
/prototype|prototype]]
]]