Javascript语法 - if语句

时间:2015-12-02 14:41:26

标签: javascript javascript-objects

我有以下对象:

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的原因是因为有时某些属性根本没有定义。

2 个答案:

答案 0 :(得分:10)

  

为什么以下IF返回true?

假设 if "UTF-16" in inString or "utf-16" in inString: root=fromstring(inString.replace("&lt;","<").replace("&gt;",">")) else: root=fromString(inString) toppingOrder,请填写并查看我们的内容

quarters
  

我怎么能问所有方面是否都是假的?

您必须循环,使用逻辑AND 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) 或某些 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这样做,例如使用逻辑NOT if

!

答案 1 :(得分:2)

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;
}