为什么JavaScript中没有逻辑异或?
当前回答
没有逻辑异或(^^)的原因是,与&&和||不同,它没有提供任何惰性逻辑优势。也就是左右两边表达式的状态都要求值。
其他回答
两个布尔值的异或仅仅是它们是否不同,因此:
Boolean(a) !== Boolean(b)
是的,按照下面的步骤做。 假设您正在处理布尔值A和B,那么可以使用以下代码在JavaScript中计算XOR B值
var xor1 = !(a === b);
上一行也相当于下面一行
var xor2 = (!a !== !b);
就我个人而言,我更喜欢xor1,因为我需要输入更少的字符。我相信xor1也更快。它只是进行了两次计算。Xor2执行三次计算。
视觉讲解…阅读下面的表格(0代表假,1代表真),比较第3列和第5列。
(a === b):
| A | B | A XOR B | A === B | !(A === B) |
------------------------------------------
| 0 | 0 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 1 | 0 |
------------------------------------------
享受。
Boolean的一行代码:
if (x ? !y : y) { do something cool }
查看:
JavaScript中的逻辑异或
你可以这样模仿它:
if( ( foo && !bar ) || ( !foo && bar ) ) {
...
}
嘿,我找到了这个解决方案,在JavaScript和TypeScript上制作和XOR。
if( +!!a ^ +!!b )
{
//This happens only when a is true and b is false or a is false and b is true.
}
else
{
//This happens only when a is true and b is true or a is false and b is false
}
推荐文章
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError:
- [].slice的解释。调用javascript?
- jQuery日期/时间选择器
- 我如何预填充一个jQuery Datepicker文本框与今天的日期?
- 数组的indexOf函数和findIndex函数的区别
- jQuery添加必要的输入字段
- Access-Control-Allow-Origin不允许Origin < Origin >