为什么 [] == 0
是 true,"0" == 0
也是 true
但是 [] == "0"
确是 false 呢?
简单地说就是 JS 的缺点,JS 的数据格式并不严谨,
当使用 ! 或者 == 作为运算符的时候,数据类型会被强制转换!
其中:
!:将数据类型强制转换为 Boolean,然后输出
== :将等号左右的内容优先转换为相同的数据格式,然后比较
这个问题里面的 [] 的数据类型是 Object,Boolean(Object) 默认返回 true
如果是 null, undefined, false, 0, "" 会被视为 false
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
[] == 0
是 true,因为Number([])是0,"0" == 0
是 true,因为Number('0')是0,[] == "0"
是felse,因为String([])是'',说白了,就是不同数据类型之间做比较时,会先尝试把前面的比较对象转换成后面比较对象相同的数据类型,使用===或者!==就不会去试图转换了,都是false