颠倒“两个”的逻辑;或;JavaScript if查询中的语句

颠倒“两个”的逻辑;或;JavaScript if查询中的语句,javascript,if-statement,logic,Javascript,If Statement,Logic,我用JavaScript做了一个if测试,它实现了我想要的,但没有尽可能优雅。事情是这样的: if (x > y || p < q) { // don't do anything } else { doSomeFunction(); } if (x <= y && p >= q) { doSomeFunction(); } if(x>y | py | py | | py | | p

我用JavaScript做了一个
if
测试,它实现了我想要的,但没有尽可能优雅。事情是这样的:

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

如果有任何方法可以翻转此逻辑,因此只有一个
If
语句,而不必有伪If条件和
else
条件?

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

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

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

if (x <= y && p >= q) {
    doSomeFunction();
}
if(x=q){
doSomeFunction();
}
您可以使用来反转条件:

if (!(x > y || p < q)) {
   doSomeFunction();
}
if(!(x>y | p
或者简单地重写如下条件:

if (x > y || p < q) {
    // don't do anything
} else {
   doSomeFunction();
}
if (x <= y && p >= q) {
   doSomeFunction();
}
if(x=q){
doSomeFunction();
}
注:有关这两个条件为何等效的说明,请参阅。

您可以使用来反转条件:

if (!(x > y || p < q)) {
   doSomeFunction();
}
if(!(x>y | p
或者简单地重写如下条件:

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

注:有关这两个条件为何相等的解释,请参阅。

最后一个选项(可读性较差)与另一个答案是:

(x>y | | p

如果左括号为真,则不会执行该函数。

与其他答案一起,最后一个选项(可读性较差)为:

(x>y | | p

如果左括号为真,它将而不是执行函数。

谢谢Karl André,我不知道你能这样写JS!但我想,正如你所说,其他答案更具可读性。这是可行的,但我相信。“…请不要滥用
&
| |
语句,因为强大的
if
语句更好。”@p.s.w.g没有说要使用它,只是给出了一个可能的解决方案,在这种情况下,我会使用if。绝对。这不是批评,只是一个注释。:)谢谢Karl André,我不知道你能写出这样的JS!但我想,正如你所说,其他答案更具可读性。这是可行的,但我相信。“…请不要滥用
&
| |
语句,因为强大的
if
语句更好。”@p.s.w.g没有说要使用它,只是给出了一个可能的解决方案,在这种情况下,我会使用if。绝对。这不是批评,只是一个注释。:)与
相对的是什么