JavaScript 三个等号(===)比较后为true,必须满足以下四个条件:
[b]1、两个的数据类型必须一样;
2、两个数据的值必须一样;
3、两个都不能是NaN;
4、两个都不能是对象(除非两个都是null);[/b]
[b]
说明:① JS是引用比较,而非值比较;
② === 比较时,两边的数据不做任何的类型转换。[/b]
例子:
1、数据类型不一样:
2、值不一样结果肯定是false,代码就不用写了吧。
3、NaN的情况:
4、不能是对象的情况:
5、容易出错的比较:
[b]1、两个的数据类型必须一样;
2、两个数据的值必须一样;
3、两个都不能是NaN;
4、两个都不能是对象(除非两个都是null);[/b]
[b]
说明:① JS是引用比较,而非值比较;
② === 比较时,两边的数据不做任何的类型转换。[/b]
例子:
1、数据类型不一样:
var a = '1';
var b = 1;
var c = new String('1');
a === b;//结果是false
a === c;//结果是false,同时c是一个对象
2、值不一样结果肯定是false,代码就不用写了吧。
3、NaN的情况:
NaN === NaN;//结果是false
NaN === 0;//结果是false
4、不能是对象的情况:
var a = 1;
var b = new Number(1);
var c = new Number(1);
var d = {s: 1, t: 2};
var e = {s: 1, t: 2};
var f = [1, 2, 3];
var g = [1, 2, 3];
a === b;//结果是false
c === b;//结果是false
d === e;//结果是false,因为它们都是对象,就算它们属性及其值都一样
f === g;//结果是false,数组也是对象
5、容易出错的比较:
null === null; //结果是true,虽然null的数据类型是对象,这是一个特例
undefined === undefined; //结果是true,因为undefined是JS的全局属性
Infinity === Infinity; //结果是true,Infinity也是JS的全局属性
null === undefined; //结果是false,null是对象类型的,undefined是全局属性