为什么 JavaScript 中没有逻辑异或?

2022-08-30 00:32:01

为什么 JavaScript 中没有逻辑异或?


答案 1

JavaScript将其祖先追溯到C,而C没有逻辑XOR运算符。主要是因为它没有用。Bitwise XOR非常有用,但在我多年的编程生涯中,我从来不需要逻辑XOR。

如果您有两个布尔变量,则可以使用以下命令模拟 XOR:

if (a != b)

使用两个任意变量,您可以使用它们强制为布尔值,然后使用相同的技巧:!

if (!a != !b)

不过,这非常晦涩难懂,当然值得评论。事实上,在这一点上,你甚至可以使用按位XOR运算符,尽管这对于我的口味来说太聪明了:

if (!a ^ !b)

答案 2

Javascript 有一个按位 XOR 运算符 : ^

var nb = 5^9 // = 12

您可以将其与布尔值一起使用,它将给出0或1的结果(例如,您可以将其转换回布尔值)。但正如约翰所说,它等同于,这更清楚。result = !!(op1 ^ op2)result = (op1 != op2)