为什么这个['3'| 0 + 1]按位不起作用?

vsy*_*ync 0 javascript bit-manipulation

它似乎只适用于"偶数"数字:

"8"|0 + 1   // 9
"3"|0 + 1   // 3
("3"|0) + 1 // 4
Run Code Online (Sandbox Code Playgroud)

"3"|0转换为整数3.

那么这里发生了什么?
为什么第二个例子在JS中就像这样?

Dav*_*ven 8

+的优先级高于|.

所以它解析如下:

"8" | (0 + 1) = "8" | 1 = 9
"3" | (0 + 1) = "3" | 1 = 3
Run Code Online (Sandbox Code Playgroud)


Nei*_*eil 6

+具有更高的优先级,|因此您需要将括号放入以获得所需的评估顺序.