如果查询,则反转JavaScript中两个“或”语句的逻辑

时间:2014-04-09 15:21:42

标签: javascript if-statement logic

我在JavaScript中进行了if测试,它实现了我想要的但不尽可能优雅。它是这样的:

if (x > y || p < q) {
    // don't do anything
} else {
   doSomeFunction();
}

如果有任何方法可以翻转这个逻辑,那么只有一个if语句而不必具有虚拟if条件以及else条件?

3 个答案:

答案 0 :(得分:8)

您可以使用! operator来反转条件:

if (!(x > y || p < q)) {
   doSomeFunction();
}

或者简单地重写这样的条件:

if (x <= y && p >= q) {
   doSomeFunction();
}

注意:有关这两个条件相同的原因的解释,请参阅De Morgan's laws

答案 1 :(得分:2)

您可以简单地反转比较和逻辑OR。

if (x <= y && p >= q) {
    doSomeFunction();
}

答案 2 :(得分:2)

除了另一个答案,最后一个选项(不太可读)是:

(x > y || p < q) || doSomeFunction();

如果左括号为true,则 NOT 执行该功能。