【发布时间】:2020-04-12 07:36:17
【问题描述】:
当我看到这个表情时
let a : number = 3;
a = a + 5;
我立即将其重构为
let a : number = 3;
a += 5;
在这两种情况下,结果都是a===8(为了清楚起见,我添加了变量类型)。但是,同样模式的布尔表达式
let b : boolean = false;
b = b || true;
不等于
let b : boolean = false;
b |= true;
因为它产生一个数字。现在,该数字与 true 相关,因为它是一个非零(相反,它对应于 false 在相反的情况下,因为它返回零)。当然,这是有一定逻辑的。
我无法解释为什么会发生这种情况,这让我很困扰。
所有示例都是在 Chrome 的控制台中执行的,我不确定是否由于我在浏览器中的操作或再现而发生了从 boolean 到 number 的转换,或者可能还有别的东西。
【问题讨论】:
-
Bitwise OR assignment - 相当于
b = b | true,但你应该使用它的数字:a = 9; a|=7; a === 15 -
仔细看:
a |= b中的操作符是什么?提示:有多少竖条?
标签: javascript typescript boolean variable-types