我想知道为什么javascript中的以下比较会给我不同的结果。
(1==true==1)
true
(2==true==2)
false
(0==false==0)
false
(0==false)
true
我无法弄清楚原因。
答案 0 :(得分:3)
测试等同于:
(true==1)
true
(false==2)
false
(true==0)
false
相当于:
(1==1)
true
(0==2)
false
(1==0)
false
在每种情况下,==
都会将布尔值转换为数字1
或0
。因此,每个==
中的第一个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 =>假