当前位置:  开发笔记 > 编程语言 > 正文

Javascript语法 - if语句

如何解决《Javascript语法-if语句》经验,为你挑选了1个好方法。

我有以下对象:

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



1> Paul S...:

为什么以下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)
    ) // ...

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有