2015-12-22 106 views
2

在下面的代碼中,與條件(ran1 <= 63 && ran2 <= 18)相反的是什麼,它應該適用於if語句的else部分?JavaScript:邏輯運算符「A && B」的相反之處是什麼?

難道是(ran1 <= 63 || ran2 <= 18)(! (ran1 <= 63 && ran2 <= 18))

從邏輯上說,我想A and B的反義詞是A or Bneither A nor B。但我不確定如何在JavaScript中表示neither A nor B位。

var ran1 = 1 + Math.floor(Math.random() * 100); 
var ran2 = 1 + Math.floor(Math.random() * 100); 

if (ran1 <= 63 && ran2 <= 18) { 
    // code 
} else { 
    // code 
} 
+2

'RAN1> 63 || ran2> 18' - 您需要反轉每個操作數。 https://en.wikipedia.org/wiki/De_Morgan%27s_laws – zerkms

+2

閱讀[德摩根法律](https://en.wikipedia.org/wiki/De_Morgan%27s_laws)。 – Amadan

回答

8

A && B數學否定是!A || !B,所以你的情況,這將是

ran1 > 63 || ran2 > 18 
+0

留給我自己的設備,我會想出'ran1> 63 && ran2> 18'。我想'ran1> 63 || ran2> 18'等同於「既不A也不B」的想法? –

+0

你提出的是錯誤的。您可以使用示例輕鬆進行驗證:ran1 = 64,ran2 = 9。您的原始條件不滿足,但您的建議也不滿意。標準邏輯推理:「不(A和B)」與「(不是A)或(不是B)」相同。只需編寫一個簡單的表格,其中包含A和B的所有值(僅4:A既可以是true也可以是false,B也可以)。這是很快驗證:) – nathanvda

+1

作爲一個方面說明。由於我們使用Javascript進行編碼,並且CPU週期對大多數開發人員/用戶來說沒有多大意義,但類似於此問題的邏輯可能是NodeJS,並且可能發生在大批量處理中。因此,嘗試將首先出現在&&運算符上的表達式更頻繁地失敗,並且將更頻繁地傳遞給||的表達式運營商。這有助於提高性能。 – Will