`

==和===

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

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

===  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是个充满陷阱的地方,要小心!
----------------------------------

js中比较值的话,用==就可以了
===是类型和值一起比较
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics