javascript中的原始类型比较和数组对象之间的比较
javascript中的原始值包括:Undefined,null,布尔值,数字,字符串,
对象包括:数组和函数
数字,字符串 布尔值的比较是值的比较:只有当他们的值相等时他们才相等。
比较两个字符串是否相等的时候:只有当它们的长度和索引所对应的值相等时它们才相等。
而对象则不是这样的。
首先,它们的值是可变的(字符串的值是不可变的,所有的字符串的方法得到一个新的字符串的时候,那只是返回一个新的字符串,而并没有去改变原来的字符串)
对象的比较不是值的比较,即使它们两长的一模一样也不相等,代码如下:
var o = {x:1}; var p = {x:1};
var c = 0;
console.log( o === p); // false
console.log( 0 === c); //true;
从上面的例子可以看出:
我们通常将对象称为引用类型,以些来和javascript的基本数据类型分开来。对象值都是引用,对象的比较都是引用的比较,当且仅当它们引用同一个基对象时它们才相等。
var f = []; var g = f; f[0] = 1; console.log(f === g); console.log(f); //[1] console.log(g); //[1]
用一句容易懂的话来说就是:我变你也变,这样我们两在任何情况下都是相等的。
function compareByIteration (a, b)
{
for (var i = 0; i < a.length; i++) {
if ( a[i] !== b[i] ) {
return false;
}
return true;
};
}
var a = ['a', 'b'];
var b = ['a', 'b'];
console.log(compareByIteration(a,b)); //true

浙公网安备 33010602011771号