【发布时间】:2017-01-07 10:53:39
【问题描述】:
我刚刚看到在一些 JavaScript 中使用了这个快捷方式。
(9 + 2) / 2|0; // results in 5
当你进行正常的数学运算时,它会得到 5.5。
为什么上面的表达式会导致 Math.floor((9+2)/2)? 有人能指出那个管道正在做什么的方向吗,我不明白捷径。
【问题讨论】:
标签: javascript math
我刚刚看到在一些 JavaScript 中使用了这个快捷方式。
(9 + 2) / 2|0; // results in 5
当你进行正常的数学运算时,它会得到 5.5。
为什么上面的表达式会导致 Math.floor((9+2)/2)? 有人能指出那个管道正在做什么的方向吗,我不明白捷径。
【问题讨论】:
标签: javascript math
单管 |是BitWise OR。
位运算符只允许整数值,所以小数点后的值被丢弃。
Bitwise OR 运算符 |采用 2 位模式,并对每对对应的位执行 OR 操作。
下面的例子将解释它。
1010
1100
----------bitwise or
1110
【讨论】:
(9+2)/2的结果在JavaScript中是5.5
Or 操作。对于 JavaScript,按位运算不能直接在 64 位表示上起作用。而是将值转换为 32 位整数,即5.5 到5,则5|0 的结果为5。【讨论】: