爲什麼下面的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