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

时间:2015-10-26 15:20:00

标签: javascript boolean bit-manipulation

问题

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

result |= condition

而不是:

result = result || condition 

在javascript中,用于布尔运算。

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

我目前不在我的电脑前,但也想知道是否会出现|| =运营商这样的事情。

更新

我刚刚意识到boolean值非常重要1 bit value。这是否意味着booleans logical orbitewise or相同?

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

1 个答案:

答案 0 :(得分:1)

  

这是否意味着布尔值符合逻辑或与bitewise相同或?

在你的情况下,有点。

使用逻辑表达式时,操作数可以是true-ish或false-ish。这里的OR表达式返回第一个是true-ish(不一定是布尔true),如果没有,则返回最后一个操作数。

result || condition

如果result为true-ish,则返回result,否则condition

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

result | condition

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

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