彼のEloquentJavascriptで、Haverbekeは次のように主張しています(16ページ)。
「JavaScriptシステムでは、このデータのほとんどは値と呼ばれるものにきちんと分けられています。すべての値には、果たすことができる役割の種類を決定するタイプがあります。値には、数値、文字列、ブール値、オブジェクト、関数、および未定義の値。」
しかし、JavascriptのCrockford: TheGoodPartsは次のように述べています。
「JavaScriptの単純なタイプは、数値、文字列、ブール値(trueおよびfalse)、null、および未定義です。他のすべての値はオブジェクトです。数値、文字列、およびブール値は、メソッドがあるという点でオブジェクトに似ていますが、不変です。 JavaScriptのオブジェクトは、可変のキー付きコレクションです。JavaScriptでは、配列はオブジェクト、関数はオブジェクト、正規表現はオブジェクト、そしてもちろんオブジェクトはオブジェクトです。」
さて、少なくともV8の下では、私はこれを手に入れます:
> typeof function(){};
'function'
> typeof {};
'object'
オブジェクトが型で関数がオブジェクトなのか、関数とオブジェクトが両方とも型なのかわかりません。プリミティブ型と他の種類の型(複合型?)の区別が欠けていると思います。