当前位置: 代码迷 >> Web前端 >> true 跟 false也能相等
  详细解决方案

true 跟 false也能相等

热度:376   发布时间:2012-09-22 21:54:54.0
true 和 false也能相等

/**

以下让大家看到一个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

?

?

  相关解决方案