论坛首页 Web前端技术论坛

《javascript权威指南第五版》==和===的区别

浏览 5341 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-03  
==和===都是判断两个值是否相同

对象,数组和函数用引用进行比较。只有两个变量指向同一个对象时才相等。如果想比较不同对象里的值是否相等,需要自定义方法。

===  identity operator 标志位判断?

如果两个值的类型不同,则不同
如果两个值是number并且值相同,除非等于NaN,则相同。
如果两个值是strings并且值相同,则相同。注意string是每个字节进行比较,如果编码不同需要用String.localeCompare()。
如果两个值是boolean并且值相同,则相同
如果两个值都是null或者都是undefined,则相同

== equality operator
如果两个值的类型相同,则等同于用===判断
如果两个值类型不同
*如果一个是null,一个是undefined,他们等同
*如果一个是string,另一个是number,则将string转成number再比
*如果有一个值是TRue,则转成1再比。false转成0
*如果有一个是object,则用toString()或valueOf()进行转换再进行比较
*Any other combinations of values are not equal.?

Java的==好像和JavaScript的===比较相似,都是比较引用对象的ID,而不是比较引用对象的值。在Java如果需要比较对象值,则需要自定义equals。Scala的==则比较像Java的equals。
equals是个充满陷阱的地方,要小心!
   发表时间:2009-11-06  
所以还是用三个等号的比较保险。
0 请登录后投票
   发表时间:2009-11-07  
js中如果你只是想单纯的比较值的话,==就可以了
===是类型和值一起比较
0 请登录后投票
   发表时间:2009-11-09  
受教了,以前还真没注意过
0 请登录后投票
   发表时间:2010-04-08  
终于让我理解了三个等号
0 请登录后投票
论坛首页 Web前端技术版

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