布尔值的按位赋值运算符而不是更长的表达式(|= 运算符)

Bitwise Assignment Operator for Boolean instead of Longer Expression ( |= operator)

问题

我的一个朋友问他是否可以使用:

result |= condition

而不是:

result = result || condition 

在 javascript 中,用于布尔运算。

我很清楚,一个是按位的,另一个是合乎逻辑的。 但是,对布尔变量有什么影响?

我目前不在电脑前,但也想知道是否有 ||= 运算符这样的东西。

更新

我刚刚意识到 boolean 值本质上是 1 bit value。这是否意味着 booleanslogical orbitewise or 相同?

所以 a|=b 等同于 a=a|b ?

Does this mean that for booleans the logical or has the same as the bitewise or ?

在你的情况下,有点。

使用逻辑表达式时,操作数可能为真或假。这里的 OR 表达式 returns 第一个是 true-ish(不一定是布尔值 true),或者如果 none 是最后一个操作数。

result || condition

Returns result 如果 result 是正确的,否则 condition

使用按位表达式时,操作数是带符号的 32 位整数。如果将其限制为一位,这有点类似于逻辑表达式的行为:如果设置了一位,则 OR 表达式 returns 1.

result | condition

Returns 一个带符号的 32 位整数,其操作数的值为 0 或 1,可转换为仅使用最低有效位的 32 位整数。

但是,当对非 32 位整数的操作数使用按位表达式时,必须执行到 32 位整数的隐式转换,并且可能存在其他边缘情况。我不建议对逻辑操作数使用按位表达式。