参照内容来自《JavaScript权威指南》
不可变的原始值和可变的对象引用
JavaScript中的原始值包括undefined,null,布尔值,数字和字符串。原始值是不可更改的,原始值中的字符串也是不可修改的,字符串中的所有方法只是返回一个新字符串。
对象的值是可修改的,对象通常被称为引用类型,以区分JavaScript的基本类型。对象的值称为引用,对象间的比较称为引用的比较。
对象之间如何进行比较:对象的比较并非值的比较,两个对象包含同样的属性和相同的值也不一定相等。只有当它们引用同一个基对象时,才相等。例如:
var a = [ ]; //定义一个空数组
var b = a; //变量b引用同一数组
b[0] = 1; // 修改b[0]的值,此时a[0]也会随之发生变化,a[0]的值此时也变为1
a与b是相等的,这不同于副本。如果是副本,则两者在进行引用的比较时,是不相等。
下面是副本:
var a = [11, 12, 13];
var b = [ ];
for(var i = 0; i < a.length; i++){
b[i] = a[i];
}//这样b是a的副本,两者在值上的比较是相等的,但在引用的比较上是不相等的。