【问题标题】:Reverse the logic of two "or" statements in JavaScript if query反转 JavaScript if 查询中两个“或”语句的逻辑
【发布时间】:2014-04-09 15:21:42
【问题描述】:

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

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

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

【问题讨论】:

  • &gt;&lt; 的对立面是什么?

标签: javascript if-statement logic


【解决方案1】:

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

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

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

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

注意:请参阅De Morgan's laws,了解为什么这两个条件是等价的。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      如果左括号为真,它将执行该函数。

      【讨论】:

      • 感谢 Karl-André,我不知道你可以这样写 JS!但我想,正如你所说,其他答案更具可读性。
      • 这行得通,但我相信Brendan Eich would call it abusage。 "...请不要滥用 &amp;&amp;||,因为强大的 if 声明更好。"
      • @p.s.w.g 不是说要使用它,只是给出一个 possible 解决方案,在这种情况下我会使用 if。
      • 当然。那不是批评,只是注释。 :)
      猜你喜欢
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      相关资源
      最近更新 更多