JavaScript のプリミティブ型には、5 つの型が存在する。
そのうち、基本データを表す 3 つを挙げてみよう。

これらがどのようなデータなのかは説明不要だろう。

プリミティブということに、違和感を感じる人は多いと思う。
というのも、Boolean, Number, String の 3 つの型は、
オブジェクトとして、良く知られているからだ。

実は、これら 3 つの型に関しては、
プリミティブ型とオブジェクト型の両方が存在する。
プリミティブ型としてのこれらは、
プロパティを持たない、純粋なデータとして扱われる。

これらが具体的にどこで出現するかというと、
「リテラル値」として記述された場合だ。

例えば、リテラル値 「true」 は、Boolean プリミティブ値だ。
リテラル値 「0」 は、Number プリミティブ値だ。
リテラル値 「"foobar"」 は、String プリミティブ値だ。

オブジェクトかプリミティブかを調べるためには、
typeof 演算子を使うことができる。

typeof true は、"boolean" という文字列を返すが、
typeof new Boolean(true)"object" という文字列を返す。

暗黙の型変換を行わない、厳密な比較演算子 === を使えば
true === new Boolean(true)false を返す。

つまり、true はプリミティブ値であり、
new Boolean(true) はオブジェクトであり、
両者は異なる型として認識されているということが分かる。