`
alanwu
  • 浏览: 197765 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
==和===都是判断两个值是否相同

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

===  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是个充满陷阱的地方,要小心!
分享到:
评论
5 楼 thuiones 2010-04-08  
终于让我理解了三个等号
4 楼 akunamotata 2009-11-09  
说的不错...
3 楼 01404421 2009-11-09  
受教了,以前还真没注意过
2 楼 wese345 2009-11-07  
js中如果你只是想单纯的比较值的话,==就可以了
===是类型和值一起比较
1 楼 zzhonghe 2009-11-06  
所以还是用三个等号的比较保险。

相关推荐

Global site tag (gtag.js) - Google Analytics