Javascript 反转布尔表达式

Javascript 反转布尔表达式,javascript,language-agnostic,boolean-expression,Javascript,Language Agnostic,Boolean Expression,我有一些这样的代码 var a = returnsABoolean(); var b = returnsABoolean(); if (!a || !b) { } else { doStuff(); } 如何在if语句中反转测试,以便将其重写为 var a = returnsABoolean(); var b = returnsABoolean(); if (someExpression) { doStuff(); } 换句话说,我应该用什么测试来替换某个表达式来保留现有的行为

我有一些这样的代码

var a = returnsABoolean();
var b = returnsABoolean();

if (!a || !b) {

} else {
  doStuff();
}
如何在if语句中反转测试,以便将其重写为

var a = returnsABoolean();
var b = returnsABoolean();

if (someExpression) {
  doStuff();
}

换句话说,我应该用什么测试来替换某个表达式来保留现有的行为?

德摩根定律规定你可以重写
!a | | |!b作为
!(a和b)


这也是另一种方式:
!a&&!b
可以重写为
!(a | | b)

你需要应用德摩根定理。其中指出:

!A || !B == !(A && B)
因此,您的测试可以重新编写为:

if (a && b) {
    doStuff();
}

它为什么有效? 基本上,应用De Morgan定理,首先将您的陈述改写为:

if ( ! (a && b) ) {

} else {
    doStuff();
}
因为我们现在想要反转
!(a和b)
我们只是删除而不是

if ( (a && b) ) {
    doStuff();
}

只需将条件的逻辑逆赋值给上一个作用域的“else”语句

if( a && b ) { 
    doStuff();
     }

该页面似乎描述了如何重写表达式,而不是如何反转one@Georgio:一旦将表达式设置为
!(a和b)
显然,相反的做法是简单地删除
?@Georgio:那是一样的。但我想得到表达式的倒数,而不是重写它。是的,所以要反转,你只需要从重写中删除倒数,而不是
!(a&&b)
,这只是
(a&&b)
这个答案是正确的,所以我不知道为什么它被否决了。