为什么[] == ' ' 为false???

MrWang
  • 3.7k

image.png
为很么去掉''的空格就相等了???

image.png

回复
阅读 1.1k
6 个回答
✓ 已被采纳

==会对两边比较值做类型转换,转换方式参看这里:在这里

  • [] == false

    1. 转换类型:[].toString() == Number(false),就变成了'' == 0
    2. 转换类型:Number('') === 0,就变成了0 === 0,结果就是true
  • '' == false

    1. 转换类型:Number('') === Number(false),就变成了0 === 0,结果就是true
  • [] == ' '

    1. 转换类型:[].toString() == ' ',就变成了'' == ' '
    2. 转换:'' === ' ',结果就是false

这样,答案就很显然了,JS比较不具备传递性,略显奇葩。

  1. 当进行==比较时候: 先检查两个操作数数据类型,如果相同, 则进行===比较, 如果不同, 则为你进行一次类型转换, 转换成相同类型后再进行比较;
  2. 当进行===比较时, 如果类型不同,直接就是false。

所以对[] ''双等比较时,会进行数据类型转换。

== 应该被扫进垃圾堆,研究它没什么意义。

''是空字符串,' '是有一个空格字符的字符串,两者不一样

' ' == false 和 ' ' == [] 两边转换的类型不一样

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

宣传栏