JavaScript: 逻辑运算符 `A && B` 的反义词是什么?

5
在以下代码中,条件 (ran1 <= 63 && ran2 <= 18) 的相反条件是什么?它应该适用于 if 语句的 else 部分吗?
(ran1 <= 63 || ran2 <= 18)(! (ran1 <= 63 && ran2 <= 18)) 吗?
从逻辑上讲,我认为 A 和 B 的相反条件既是 A 或 B,也是 既非 A 也非 B。但我不确定如何在 JavaScript 中表达 既非 A 也非 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) - zerkms
2
阅读德摩根定律 - Amadan
1个回答

15

数学上对于 A && B 的否定是 !A || !B,因此在你的情况下,它将会是

!A || !B
ran1 > 63 || ran2 > 18 

如果让我自己来,我会想出 ran1 > 63 && ran2 > 18。我猜 ran1 > 63 || ran2 > 18 相当于“既不是A也不是B”的概念? - pourrait Peut-être
你提出的方案是错误的。你可以通过一个例子轻松验证:ran1 = 64,ran2 = 9。你原来的条件没有被满足,但你提出的条件也没有被满足。标准逻辑推理:not(A and B)(not A) or (not B)相同。只需编写一个简单的表格,列出A和B的所有值(只有4个:A为真或假,B也是如此)。这很快就可以验证 :) - nathanvda
1
顺便提一下,由于我们正在使用Javascript编码,CPU周期对大多数开发人员/用户来说并不重要,但类似于这个问题的逻辑可能会出现在NodeJS中,并且可能会在大批量处理中发生。因此,请尝试将更频繁失败的表达式放在&&运算符的前面,将更频繁通过的表达式放在||运算符的前面。这有助于提高性能。 - Will

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接