当我看到表情
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 的控制台中执行,我不完全确定是否由于我在浏览器中的操作或再现或其他原因导致从布尔值转换为数字。