论坛首页 Web前端技术论坛

JavaScript 三个等号(===)比较后为true的条件

浏览 1554 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-12-13  
JavaScript 三个等号(===)比较后为true,必须满足以下四个条件:

1、两个的数据类型必须一样;
2、两个数据的值必须一样;
3、两个都不能是NaN;
4、两个都不能是对象(除非两个都是null);


说明:① JS是引用比较,而非值比较;
           ② === 比较时,两边的数据不做任何的类型转换。


例子:

1、数据类型不一样:
<pre name="code" class="java">var a = '1';
var b = 1;
var c = new String('1');

a === b;//结果是false
a === c;//结果是false,同时c是一个对象</pre>

2、值不一样结果肯定是false,代码就不用写了吧。


3、NaN的情况:
<pre name="code" class="java">NaN === NaN;//结果是false
NaN === 0;//结果是false</pre>

4、不能是对象的情况:
<pre name="code" class="java">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,数组也是对象
</pre>

5、容易出错的比较:
<pre name="code" class="java">null === null; //结果是true,虽然null的数据类型是对象,这是一个特例
undefined === undefined; //结果是true,因为undefined是JS的全局属性
Infinity === Infinity; //结果是true,Infinity也是JS的全局属性
null === undefined; //结果是false,null是对象类型的,undefined是全局属性</pre>
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics