Javascript语法-if语句

Javascript Syntax - if statement

本文关键字:语句 -if 语法 Javascript      更新时间:2023-09-26

我有以下对象:

var quarters = {
                q1:false,
                q2:false,
                q3:false,
                q4:{name: "i'm q4"}
                }

我的问题是,为什么下面的IF返回true?

if (quarters.q1 == quarters.q2 == quarters.q3 == quarters.q4 == false)

我如何询问if all quarters are false

我不使用!quarters.q1 && !quarters.q2 && !quarters.q3 && !quarters.q4的原因是,有时根本没有定义某些属性。

为什么下面的IF返回true?

假设toppingOrderquarters,让我们填写它,看看我们有什么

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)

如果所有四分之一都是假的,我怎么能问呢?

您必须循环,使用逻辑AND &&或一些Array方法,如.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)
    ) // ...
quarters.q1 == quarters.q2 == quarters.q3 == quarters.q4 == false
true == quarters.q3 == quarters.q4 == false
false == quarters.q4 == false
true == false

你基本上在做的是这个

一切都将从左到右执行,除非您设置订单(使用( )

你可以这样做

function get_bool(quarters){
 for(k in quarters)
 {
  if(quarters[k] != false)
  {
   return true;
  }
 }
 return false;
}