JavaScriptのプリミティブ型は下記の5つのみ。
それ以外の配列や関数などは全てobjectとなる。
- boolean
- number
- string
- undefined
- null
よく同一視されるundefinedとnullの違いとしては、
- undefinedは未定義の状態、つまり何も設定されていない状態
- nullは何もない状態
であり、undefinedは変数宣言を行って値を入れていない状態でセットされるが、nullは意図的に設定しなければ、その値を示さない。
またES5以前の環境ではundefinedはグローバルオブジェクトで値を書き換えることができたため、void 0などの記法を用いて確実にundefinedを指すようにすることが多かったが、モダンブラウザでは単純な同値比較でOK。
typeof演算子を使った場合には、他のプリミティブ型と同じく、undefinedはundefinedを指すが、nullはobjectを指す(ちなみにobjectの中で関数のみfunctionを指す)。
入門書でtypeof演算子と一緒に紹介されるinstanceof演算子は、オブジェクトのプロトタイプチェーンを辿って、指定されたコンストラクタがあるかどうかを調べるもので、つまり全てのオブジェクトはObjectとの比較がtrueになる。
またそのオブジェクトのコンストラクタの名前を取得するには、コンストラクタで生成された全てのオブジェクトが持つ、object.constractorプロパティを参照すればいい。