0

这有点难以解释,但我想做一些看起来像这样的事情:

if(a === 4 && b === true && c === "words" || "numbersandwords")DoSomething();

但它在不匹配第一个运算符的情况下结束运行。我想知道如何让除 2 个不同输入之外的最后一个运算符,同时在运行前仍确保满足其他条件。

4

3 回答 3

1

只需使用几个括号将您的or部分和部分分开,然后在最后一个字符串之前and添加。c ===最后没有那个相等部分,'numbersandwords' 字符串总是等于 true。

if(a === 4 && b === true && (c === "words" || c === "numbersandwords")){
  DoSomething();
}
于 2013-05-12T23:41:43.993 回答
1

您只需要使用括号,例如:

if(a == 4 && b == true && (c == "words" || c == "numbersandwords")) { DoSomething(); }
于 2013-05-12T23:43:55.433 回答
0

在 JavaScript 中,与其他语言一样,每个运算符(如&&and ||)都有一个优先级来确定它的评估顺序。&&的优先级高于||,因此首先对其进行评估。因此,左边的每个术语都被and一起编辑。然而,即使它们都是假的,总体结果也是真的,因为它是ored with "numbersandwords",其计算结果为真(除了 0、-0、null、假、NaN、未定义或空字符串之外的所有内容)。您需要做的第一件事就是将某些东西(大概是c)与其进行比较。然后,您可以使用括号更改评估顺序,其优先级高于其他任何内容:

if(a === 4 && b === true && (c === "words" || c === "numbersandwords")) DoSomething();

if或者,如果您可能希望最终根据以下值做一些稍微不同的事情c(或者它只是更好地表达您的意图),您可以将测试分成几个语句:

if(a === 4 && b === true)
{
    if(c === "words" || c === "numbersandwords")
    {
        DoSomething();
    }
}
于 2013-05-13T00:07:26.093 回答