在IF语句中使用AND和OR

时间:2018-01-09 14:47:45

标签: javascript google-apps-script

我正在使用Google电子表格添加脚本(非公式),而且我遇到了问题。

我需要找到一种方法来使用这样的东西:

If (Product == "Shampoo" && (Box == "15" OR Box == "17"))
{
  //Do Something...
}

基本上如果产品是洗发水,它所属的盒子是15或17,那么就做点什么。我知道做If (Product == "Shampoo" && Box == "15" OR Box == "17")会产生意外或不良结果。我们如何在谷歌脚本中使用OR和?

根据我的理解Google脚本基于Javascript,但我似乎无法在线或在SO中找到帮助帖,我得到的只是公式中的解决方案而不是脚本。

2 个答案:

答案 0 :(得分:2)

首先关于OP代码的说明

JavaScript方法区分大小写。

而不是IF正确的语法是if。另一方面,Logical OR运算符是||

考虑到上述情况,OP代码可以替换为

if(Product == "Shampoo" && (Box == "15" || Box == "17"))
{
  //Do Something...
}

if(Product == "Shampoo" && Box == "15" || Box == "17")

关于这个问题,如果(Product == "Shampoo" && Box == "15" || Box == "17")返回意外或不良结果,这可能很难阅读并导致人类混淆但JavaScript有关于如何由引擎进行操作的非常具体的规则,在这种情况下Google Apps脚本使用的Rhino。

正如a previous answer中提到的那样,在这种情况下,规则称为operator precedence,但为了使代码更容易阅读并防止混淆,一个好的做法是将每个比较括在括号中。

考虑到Logical AND的优先级高于Logical OR

(Product == "Shampoo" && Box == "15" || Box == "17")

相同
((Product == "Shampoo" && Box == "15") || Box == "17")

参考

答案 1 :(得分:1)

您在寻找两个运营商operator precedencelogical AND &&中的logical OR ||

表格的一部分:

Precedence  Operator type  Associativity    Individual operators
----------  -------------  ---------------  --------------------
       6    Logical AND    left-to-right    … && …
       5    Logical OR     left-to-right    … || …

您会看到逻辑AND优先于逻辑OR的运算符优先级。这意味着您需要OR语句的一些括号。