读JavaScript权威指南笔记
基本类型和引用类型
我们常将数据类型分为两种,即基本类型和引用类型。基本类型包括数值,布尔值,null,undefined;引用类型包括对象,数组和函数。
基本类型在内存中具有固定的大小,例如,一个数值在内存中占8个字节,而一个布尔值只占一字节。数值类型是基本类型中最大的数据类型。但是引用类型不同;例如,对象可以具有任意长的长度,对象数组也是如此。
你可能已经注意到了,字符串在javascript中没有指明为哪种类型。字符串是一个特例,因为它具有可变的大小,所以显然他不能直接存储在具有固定大小的变量中。出于效率的原因,我们希望javascript只复制对字符串的引用而不是字符串的内容。但另一方面,字符串在许多方面都和基本类型的表现相似。而字符串是不可变的这一事实(即没有办法改变一个字符串值的内容)使得字符串是基本类型还是引用类型更加令人费解。这意味着我们不能构造上面那样的例子来说明复制的是对数组的引用。其实,无论你将字符串看作是行为与基本类型相似的不可变引用类型,还是将它看作使用引用类型的内部功能实现的基本类型,结果是一样的。