我在2年内使用过javascript,但我从未见过像这样的表达式。在谷歌Chrome控制台我输入了这个
var a=456;
var b=789;
然后我输入了这个
a|=b
,结果为989
有人可以告诉我这个表达式是什么,为什么结果为989
?
答案 0 :(得分:4)
这是一个按位OR运算。当以这种方式使用时,它是“或等于”,其中结果被分配给变量。
111001000 //456
1100010101 //789
1111011101 //989
答案 1 :(得分:3)
该表达式称为按位or
,带有赋值。它取每个数字的每个位位置,如果该位在任一数字中的1
处为1
,则返回0
,否则如果两者都为0
则返回{{1}} {1}}。
有关其他此类按位操作,请参阅Mozilla documentation。
它更常用于C和C ++等系统语言。
答案 2 :(得分:2)
表达
a|=b;
就像你a+=b;
那样等同于
a = a | b;
运营商|
是OR
,而不是运营商||
。这个用作二进制操作的运算符OR
5 | 1 -> 0101 | 0001 -> 0101 -> 5
在你的情况下
456 | 789 -> 111001000 | 1100010101 -> 1111011101 -> 989