为什么JavaScript中没有逻辑xor?
发布于 2010-12-28 01:18:32
JavaScript的祖先可以追溯到C,而C没有逻辑XOR运算符。主要是因为它没有用。按位异或非常有用,但在我多年的编程工作中,我从未需要过逻辑XOR。
如果您有两个布尔变量,您可以使用以下命令模拟XOR:
if (a != b)
对于两个任意变量,您可以使用!
将它们强制转换为布尔值,然后使用相同的技巧:
if (!a != !b)
然而,这是相当晦涩的,当然也值得一提。实际上,您甚至可以在这一点上使用逐位XOR运算符,尽管这对我来说太聪明了:
if (!a ^ !b)
发布于 2010-12-28 01:24:17
Javascript有一个按位XOR运算符:^
var nb = 5^9 // = 12
你可以将它与布尔值一起使用,它会给出0或1的结果(你可以将其转换回布尔值,例如result = !!(op1 ^ op2)
)。但正如约翰所说,它等同于result = (op1 != op2)
,后者更清晰。
发布于 2015-06-25 15:38:26
两个布尔值的XOR只是看它们是否不同,因此:
Boolean(a) !== Boolean(b)
https://stackoverflow.com/questions/4540422
复制相似问题