Javascript比较

时间:2014-12-01 21:55:17

标签: javascript

我想知道为什么javascript中的以下比较会给我不同的结果。

(1==true==1)
true

(2==true==2)
false

(0==false==0)
false

(0==false)
true

我无法弄清楚原因。

3 个答案:

答案 0 :(得分:3)

测试等同于:

(true==1)
true

(false==2)
false

(true==0)
false

相当于:

(1==1)
true

(0==2)
false

(1==0)
false

在每种情况下,==都会将布尔值转换为数字10。因此,每个==中的第一个true/false会给出初始==值,然后将其用作第二个((1==true)==1) ((1==1) ==1) ((true) ==1) ((1) ==1) true ((2==true)==2) ((2==1) ==2) ((false) ==2) ((0) ==2) false ((0==false)==0) ((0==0) ==0) ((false) ==0) ((0) ==0) false 的第一个操作数。


或者全部内联:

{{1}}

答案 1 :(得分:0)

我认为这是因为它被解析为:

( (0 == false) == 0 )

哪个会说

( true == false )

答案 2 :(得分:0)

每个操作分两步完成。

(1==true==1)

第一次操作是1 == true =>真的

所以第二个是真的== 1 =>真

(2==true==2)

第一次操作是2 == true => false(只有数字1相当于js中的true)

所以第二个是假== 2 =>真

(0==false==0)

第一次操作是0 == false =>真的

所以第二个是真的== 0 =>假