首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么JavaScript中没有逻辑xor?

为什么JavaScript中没有逻辑xor?
EN

Stack Overflow用户
提问于 2010-12-28 01:15:10
回答 12查看 99K关注 0票数 233

为什么JavaScript中没有逻辑xor?

EN

回答 12

Stack Overflow用户

发布于 2010-12-28 01:18:32

JavaScript的祖先可以追溯到C,而C没有逻辑XOR运算符。主要是因为它没有用。按位异或非常有用,但在我多年的编程工作中,我从未需要过逻辑XOR。

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

代码语言:javascript
复制
if (a != b)

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

代码语言:javascript
复制
if (!a != !b)

然而,这是相当晦涩的,当然也值得一提。实际上,您甚至可以在这一点上使用逐位XOR运算符,尽管这对我来说太聪明了:

代码语言:javascript
复制
if (!a ^ !b)
票数 389
EN

Stack Overflow用户

发布于 2010-12-28 01:24:17

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

代码语言:javascript
复制
var nb = 5^9 // = 12

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

票数 80
EN

Stack Overflow用户

发布于 2015-06-25 15:38:26

两个布尔值的XOR只是看它们是否不同,因此:

代码语言:javascript
复制
Boolean(a) !== Boolean(b)
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4540422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档