/** 以下让大家看到一个true和false相等的问题研究 */ //先看第一个东西 var b = Boolean([]); console.log(b); console.log([]) //得到的结果是true,足以说明空数组在进行布尔转化时会转化为true //那么自然可以得到结论![]应该是false,验证一下 console.log(![])//确实是false //接下来看下面的东西,诡异的结果出现了 console.log([] == ![]);// 输出结果为true; /* 是不是无法理解上面的结果,一个true的东西和一个为false的比较居然是相等的。 */
?现在开始来解释原因
?
[] == ![]比较的步骤如下:
首先![]进行运算,那么结果是0
等于说就变成了[] == false的判断
?
然后你要是查看犀牛书上面的关于==号的比较的解释
会发现,对象和数字比较的方式
会把对象进行toString()转化然后再比较
那么[].toString() 就是""
?
"" == false
这种比较大家就熟悉了
返回就是true
?
?