我可以简化使用逻辑否定运算符的条件语句吗?

时间:2010-07-05 03:55:30

标签: conditional logic boolean boolean-logic logical-operators

很抱歉,如果这是一个“逻辑运营商101”的问题。我一直盯着我的屏幕看了15分钟试图把头包住它,但我被卡住了。

是否有更简洁/更优雅的方式来表达以下内容(这是JavaScript语法,但它不是一个与语言相关的问题):

if (!something && !something_else) {
  // do something
}

基于一些实验,这似乎不是逻辑等价物:

if (!(something && something_else) {
  // do something
}

此外,是否有人可以推荐在线资源进一步研究这些问题?我假设这类事物在计算机科学课程中被抽象化了,这是我编程知识中的一个重要缺口,我真的很想填写。谢谢!

4 个答案:

答案 0 :(得分:11)

(Not A) And (Not B)

相当于:

Not (A Or B)

这是De Morgan's laws

的应用程序

答案 1 :(得分:3)

正确的表达应该是:

if (!(something || something else)) {
  // do something
}

当你应用否定时,它会在AND和OR之间切换运算符。

答案 2 :(得分:3)

我想,你需要

if (!(something || something_else)) {
  // do something
}

!某事&& !something_else的意思是“既不是东西,也不是某种东西”,相当于“既不(某事或什么东西)”

答案 3 :(得分:0)

你所描述的是一个词,也就是门,或门或门。