在他的《JavaScript编程精解》一书中,Haverbeke声称(第16页):“在JavaScript系统中,大多数数据都整齐地分为称为值的东西。每个值都有一个类型,确定它可以扮演的角色种类。有六种基本类型的值:数字、字符串、布尔值、对象、函数和未定义的值。”
但是,在《JavaScript权威指南》一书中,Crockford则说:“JavaScript的简单类型包括数字、字符串、布尔值(true和false)、null和undefined。所有其他值都是对象。数字、字符串和布尔值类似对象,因为它们有方法,但它们是不可变的。JavaScript中的对象是可变的键集合。在JavaScript中,数组是对象,函数是对象,正则表达式是对象,当然,对象也是对象。”
现在,至少在V8下我得到这个:
但是,在《JavaScript权威指南》一书中,Crockford则说:“JavaScript的简单类型包括数字、字符串、布尔值(true和false)、null和undefined。所有其他值都是对象。数字、字符串和布尔值类似对象,因为它们有方法,但它们是不可变的。JavaScript中的对象是可变的键集合。在JavaScript中,数组是对象,函数是对象,正则表达式是对象,当然,对象也是对象。”
现在,至少在V8下我得到这个:
> typeof function(){};
'function'
> typeof {};
'object'
我不明白对象是一种类型,函数是一个对象,还是函数和对象都是类型。我猜我没有理解原始类型和其他类型(复合类型?)之间的区别。