什么是这个javascript表达式

时间:2014-08-05 01:47:44

标签: javascript operators

我在2年内使用过javascript,但我从未见过像这样的表达式。在谷歌C​​hrome控制台我输入了这个

var a=456;
var b=789;

然后我输入了这个

a|=b 

,结果为989

有人可以告诉我这个表达式是什么,为什么结果为989

3 个答案:

答案 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