论坛首页 Web前端技术论坛

深入透彻又简单的理解==比较符

浏览 1960 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-01  

一句话理解

 

==比较先把两侧的值转化为基本数据类型

也就是Number/String/布尔

 

如果两个基本数据类型不同

然后将基本数据类型转化为数字进行比较

如果相同直接比较值

 

看比较

 

"abc" == "abc"

都是字符串,类型相同,直接比较值,所以为true

 

"1abc" == 1

不同类型 Number("1abc")为NaN

NaN == 1为false

 

[] == []

两个对象,类型相同,不会转化,但是是两个不同的实例对象,所以为false

 

[] == ![]

左侧为对象,右侧为布尔,所以进行转化

[]转化为基本数据类型使用toString方法,值为""

![]为false,可以通过Boolean(![])进行验证

false转化为数字Number(false)为0

""转化为数字Number("")为0

所以相等

 

[] == true

不同类型

[]最终转化为数字为0

true转化为数字为1

所以为false

 

[] == false

同上,所以为true

 

var b = function(){};

b == true

b为对象,转化使用toString

字符串是"function(){}"

转化为Number,使用Number("function(){}")为NaN

所以为NaN == 1结果为false

 

同样

b == false也是

NaN == 0 结果还是false

 

差不多就这些吧,谁再看到一些有意思的可以一起研究下。

   发表时间:2012-03-29   最后修改:2012-03-29
楼主理解有误:http://www.iteye.com/topic/696802

http://www.jamcode.org/
0 请登录后投票
   发表时间:2012-03-30  
0 请登录后投票
论坛首页 Web前端技术版

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