==会对两边比较值做类型转换,转换方式参看这里:在这里。 [] == false 转换类型:[].toString() == Number(false),就变成了'' == 0 转换类型:Number('') === 0,就变成了0 === 0,结果就是true '' == false 转换类型:Number('') === Number(false),就变成了0 === 0,结果就是true [] == ' ' 转换类型:[].toString() == ' ',就变成了'' == ' ' 转换:'' === ' ',结果就是false 这样,答案就很显然了,JS比较不具备传递性,略显奇葩。
当进行==比较时候: 先检查两个操作数数据类型,如果相同, 则进行===比较, 如果不同, 则为你进行一次类型转换, 转换成相同类型后再进行比较; 当进行===比较时, 如果类型不同,直接就是false。 所以对[] ''双等比较时,会进行数据类型转换。 == 应该被扫进垃圾堆,研究它没什么意义。
==
会对两边比较值做类型转换
,转换方式参看这里:在这里。[] == false
[].toString() == Number(false)
,就变成了'' == 0
Number('') === 0
,就变成了0 === 0
,结果就是true
'' == false
Number('') === Number(false)
,就变成了0 === 0
,结果就是true
[] == ' '
[].toString() == ' '
,就变成了'' == ' '
'' === ' '
,结果就是false
这样,答案就很显然了,JS比较不具备传递性,略显奇葩。