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

  

 

posted @ 2015-02-10 22:14  savey  阅读(187)  评论(0)    收藏  举报
savey:better life,do it best