簡體   English   中英

反轉布爾表達式

[英]invert a boolean expression

我有一些像這樣的代碼

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

if (!a || !b) {

} else {
  doStuff();
}

我如何在if語句中反轉測試,以便我可以將其重寫為

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

if (someExpression) {
  doStuff();
}

換句話說,我應該用什么測試替換someExpression來保留現有的行為?

您需要應用De Morgan定理。 哪個州:

!A || !B == !(A && B)

因此,您的測試可以重寫為:

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

它為什么有效?

基本上,應用De Morgan定理,您首先要將您的陳述重寫為:

if ( ! (a && b) ) {

} else {
    doStuff();
}

因為我們現在要反轉!(a&&b)我們只需刪除not

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

只需將條件的邏輯反轉分配給先前作用域的“else”語句即可。

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

De Morgan的法律規定你可以改寫!a || !b !a || !b as !(a&&b)

這也是另一種方式: !a && !b可以改寫為!(a||b)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM