В своем "Ярком Javascript" Хавербеке утверждает, что (стр. 16):
"В системе JavaScript большая часть этих данных аккуратно разделяется на вещи, называемые значениями. Каждое значение имеет тип, определяющий ту роль, которую он может играть. Существует шесть основных типов значений: числа, строки, булевы, объекты, функции и undefined значения."
Но Крокфорд в Javascript: The Good Parts говорит:
"Простыми типами JavaScript являются числа, строки, логические значения (true и false), null и undefined. Все остальные значения являются объектами. Числа, строки и логические объекты являются объектноподобными, поскольку они имеют методы, но они неизменяемы. Объекты в JavaScript - это изменчивые коллекции с ключами. В JavaScript массивы - это объекты, функции - объекты, регулярные выражения - это объекты, и, конечно, объекты - это объекты."
Теперь, по крайней мере, под V8 я получаю следующее:
> typeof function(){};
'function'
> typeof {};
'object'
Я не понимаю, является ли объект типом, а функция является объектом или если функция и объект являются обоими типами. Наверное, мне не хватает различия между примитивными типами и другими типами типов (составные типы?).