如果开头有效,JS/TS 中的 "a|=b" 是什么意思?
What is the meaning of "a|=b" in JS/TS if it's valid to begin with?
当我看到表达式
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,因为它 returns 零)。所以这当然有一定的逻辑。
这让我很烦恼,我无法解释为什么会这样。
所有示例都是在 Chrome 的控制台中执行的,我不确定是否从 boolean[= 转换为 number 35=] 是由于我在浏览器中的操作或再现或其他原因造成的。
当我看到表达式
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,因为它 returns 零)。所以这当然有一定的逻辑。
这让我很烦恼,我无法解释为什么会这样。
所有示例都是在 Chrome 的控制台中执行的,我不确定是否从 boolean[= 转换为 number 35=] 是由于我在浏览器中的操作或再现或其他原因造成的。