为什么[]!="0"是 false 呢

为什么 [] == 0 是 true,"0" == 0 也是 true
但是 [] == "0" 确是 false 呢?

阅读 4.3k
3 个回答

[] == 0 是 true,因为Number([])是0,"0" == 0 是 true,因为Number('0')是0,[] == "0"是felse,因为String([])是'',说白了,就是不同数据类型之间做比较时,会先尝试把前面的比较对象转换成后面比较对象相同的数据类型,使用===或者!==就不会去试图转换了,都是false

简单地说就是 JS 的缺点,JS 的数据格式并不严谨,
当使用 ! 或者 == 作为运算符的时候,数据类型会被强制转换!

其中:
  !:将数据类型强制转换为 Boolean,然后输出
== :将等号左右的内容优先转换为相同的数据格式,然后比较

这个问题里面的 [] 的数据类型是 Object,Boolean(Object) 默认返回 true
如果是 null, undefined, false, 0, "" 会被视为 false

[] == "0"
image.png

ToPrimitive([]) 调用toString方法转换为 空字符串''

''=="0" 所以为 false

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题