我看到一个令人兴奋和令人困惑的问题。基于“JavaScript,好的部分”:
'' == '0' // false
0 == '' // true
那么,为什么?!
答案 0 :(得分:2)
简单回答:因为它是。
高级回答:
'' == '0'
将项目作为字符串进行比较,因为它们都是字符串。不需要更改类型,只需比较。它们完全不同,所以false
。
0 == ''
将这些项目作为数字进行比较。 ''
转换为0
,因此它们是相同的。
但真的,谁在乎呢?
答案 1 :(得分:1)
在第一种情况下,两者都是String
类型,因此不等同,因为它们的值比较。
在第二种情况下,左侧是Number
,因此发生了转化,这使''
转为0
因此true
==
会导致类型转换,然后在需要时进行比较。 ===
没有进行类型转换,所以
0 === '' // false