我的一位朋友问他是否可以使用:
result |= condition
而不是:
result = result || condition
在javascript中,用于布尔运算。
我很清楚一个是按位而另一个是合乎逻辑的。 但是,对布尔变量的影响是什么?
我目前不在我的电脑前,但也想知道是否会出现||
=运营商这样的事情。
我刚刚意识到boolean
值非常重要1 bit value
。这是否意味着booleans
logical or
与bitewise or
相同?
所以a|=b
等同于a=a|b
?
答案 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位整数的隐式转换,并且可能存在其他边缘情况。我不建议对逻辑操作数使用按位表达式。