0

当我看到表情

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

4

1 回答 1

3

|是按位或运算。||是逻辑或运算。|=是复合按位或赋值运算符。JavaScript中没有等效||=的运算符 for ||(尽管有人要添加它),因此至少现在不能使用||(or ) 进行重构。&&(嗯......如果你使用 Babel,你可以,因为该提案有一个插件。)

于 2020-04-12T07:40:57.927 回答