【问题标题】:javascript checking multiple conditions in if statementjavascript检查if语句中的多个条件
【发布时间】:2015-03-18 20:35:54
【问题描述】:

我有一个检查多个条件的 if 语句。如果至少一件事返回错误,我希望它跳过条件语句。如果至少有一件事是真的,我可以看到它当前正在选择条件语句。

if((api != 'abosp') || (api !='sersp') || (api !='volsp') || (api !='consp') || (api !='givsp') || (api !='blosp')){
console.log("api: " + api  );
api = 'cussp'
}

实现这种逻辑的正确方法是什么?

目前如果 api == 'abosp' 它仍然会传递到条件语句而不是跳过它。

【问题讨论】:

  • 这个概念叫做“短路评估”

标签: javascript


【解决方案1】:

你应该改变你的 ||对于和运算符:&&。不过,更“干净”的方法是:

banned = ["abosp", "sersp", "volsp", "consp", "givsp", "blosp"]

if(banned.indexOf(api) == -1){ // if api is not in list
   console.log("api: " + api  );
   api = 'cussp'  
}

【讨论】:

    【解决方案2】:

    实际上,您的if 无法评估为true,因为api 不能是您检查的所有值。我猜你需要and (&&) 而不是or (||)

    if ((api != 'abosp') && (api !='sersp') && ...
    

    在这种情况下,您可以使用关联数组来获得更简洁的代码:

    d = {abosp: 1, sersp: 1, volsp: 1, consp: 1, givsp: 1, blosp: 1};
    if (!d[api]) api = 'cussp';
    

    【讨论】:

      【解决方案3】:

      我认为您正在寻找 && 而不是 ||。

      如果任何单独的比较返回 false,这将跳过条件语句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 2018-09-24
        • 1970-01-01
        • 1970-01-01
        • 2017-12-08
        • 1970-01-01
        相关资源
        最近更新 更多