数学中的Javascript管道在不使用Math.floor的情况下获取Math.floor

时间:2016-08-31 02:00:30

标签: javascript math

嘿伙计们,我刚刚看到这个快捷方式在某些JavaScript中被使用了。

(9 + 2) / 2|0; // results in 5 

当您进行正常数学运算时,结果为5.5。

为什么顶级表达式会导致Math.floor((9 + 2)/ 2)? 有人可以指出管道正在做什么,我不明白捷径。

2 个答案:

答案 0 :(得分:2)

  1. 首先,(9+2)/2的结果是JavaScript中的5.5
  2. 然后它应用了按位Or操作。对于JavaScript,按位操作不能直接在64位表示上运行。相反,该值将转换为32位整数,这意味着5.55,然后5|0的结果为5

答案 1 :(得分:2)

单管|是BitWise OR 按位运算符仅允许整数值,因此在丢弃小数点值之后。

Bitwise OR运算符|采用2位模式,并对每对相应位执行OR运算。
以下例子将解释它。

1010                            
1100       
----------bitwise or
1110