为什么下面的IF返回true?
假设toppingOrder
是quarters
,让填写并看看我们
if (toppingOrder.q1 == toppingOrder.q2 == toppingOrder.q3 == toppingOrder.q4 == false)
// same as
if (false == false == false == {name: "i'm q4"} == false)
// same as
if ((((false == false) == false) == {name: "i'm q4"}) == false)
// same as
if (((true == false) == {name: "i'm q4"}) == false)
// same as
if ((false == {name: "i'm q4"}) == false)
// same as
if (false == false)
// same as
if (true)
我怎么能问,如果各方都是假的?
你要么必须循环,使用逻辑与&&
或一些阵列方法类似.every
// logical AND `&&`
if (
false === toppingOrder.q1
&& false === toppingOrder.q2
&& false === toppingOrder.q3
&& false === toppingOrder.q4
) // ...
// Array `.every`
if (
[toppingOrder.q1, toppingOrder.q2, toppingOrder.q3, toppingOrder.q4].every(
function (e) {return e === false;}
)
) // ...
它实际上是更容易测试所有true
,因此,如果您考虑可以像那样用短语if
来代替,例如使用逻辑NOT !
if (!toppingOrder.q1 && !toppingOrder.q2 && !toppingOrder.q3 && !toppingOrder.q4) // ...
// or
if (
[!toppingOrder.q1, !toppingOrder.q2, !toppingOrder.q3, !toppingOrder.q4].every(Boolean)
) // ...
'toppingOrder'是'undefined' – Dropout
'false == false'是'true','true == false'是'false','false == false'是'true' ...你可以用笔和纸。 – deceze
我刚修好了拼写错误 – TBE