我有一些像这样的代码
var a = returnsABoolean();
var b = returnsABoolean();
if (!a || !b) {
} else {
doStuff();
}
如何在if语句中反转测试,以便我可以将其重写为
var a = returnsABoolean();
var b = returnsABoolean();
if (someExpression) {
doStuff();
}
换句话说,我应该用什么测试替换someExpression
以保留现有的行为?
答案 0 :(得分:6)
您需要应用De Morgan定理。哪个州:
!A || !B == !(A && B)
因此,您的测试可以重写为:
if (a && b) {
doStuff();
}
基本上,应用De Morgan定理,您首先要将语句重写为:
if ( ! (a && b) ) {
} else {
doStuff();
}
由于我们现在要反转!(a&&b)
,我们只需删除不:
if ( (a && b) ) {
doStuff();
}
答案 1 :(得分:0)
De Morgan的法律规定您可以将!a || !b
重写为!(a&&b)
这也是另一种方式:!a && !b
可以重写为!(a||b)
答案 2 :(得分:0)
只需将条件的逻辑反转分配给之前的范围"否则"言。
if( a && b ) {
doStuff();
}