一句话来说:原始值是不可变的,而对象引用是可变的。
js中的原始值(undefined、null、布尔值、数字和字符串)与对象(包括数组和函数)有着本质的区别。原始值是不可更改的,任何方法都无法更改一个原始值;对于字符串来说,字符串中所有的方法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串值:
var str="hello world";
s.toUpperCase();
s; //仍然不变
原始值的比较是值的比较:只有它们的值相等时它们才想等。
对象和原始值不同,首先它们是可变的;其次对象的比较并非值的比较;对象的比较皆为引用的比较:当且仅当它们引用同一个基本对象时,它们才想等。
若想比较2个单独的对象或数组,必须比较它们的属性或元素,如下所示:
function equ_arrays(a,b){
if(a.length != b.lenght) return false;
for(var i=0;i<a.length;i++)
if(a[i] !== b[i]) return false;
return true;
}