[英]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.