为什么 JavaScript 中没有逻辑异或?
2022-08-30 00:32:01
为什么 JavaScript 中没有逻辑异或?
为什么 JavaScript 中没有逻辑异或?
JavaScript将其祖先追溯到C,而C没有逻辑XOR运算符。主要是因为它没有用。Bitwise XOR非常有用,但在我多年的编程生涯中,我从来不需要逻辑XOR。
如果您有两个布尔变量,则可以使用以下命令模拟 XOR:
if (a != b)
使用两个任意变量,您可以使用它们强制为布尔值,然后使用相同的技巧:!
if (!a != !b)
不过,这非常晦涩难懂,当然值得评论。事实上,在这一点上,你甚至可以使用按位XOR运算符,尽管这对于我的口味来说太聪明了:
if (!a ^ !b)
Javascript 有一个按位 XOR 运算符 : ^
var nb = 5^9 // = 12
您可以将其与布尔值一起使用,它将给出0或1的结果(例如,您可以将其转换回布尔值)。但正如约翰所说,它等同于,这更清楚。result = !!(op1 ^ op2)
result = (op1 != op2)