在math中使用Javascript管道获取math.floor而不使用math.floor

在math中使用Javascript管道获取math.floor而不使用math.floor,javascript,math,Javascript,Math,我刚刚看到在一些JavaScript中使用了这个快捷方式 (9 + 2) / 2|0; // results in 5 当你做普通数学时,结果是5.5 为什么顶部表达式会产生Math.floor((9+2)/2)? 有人能指出那根管子在干什么吗?我不懂捷径 首先,JavaScript中(9+2)/2的结果是5.5 然后应用一个位或操作。对于JavaScript,逐位操作不能直接在64位表示上工作。相反,该值被转换为32位整数,这意味着5.5到5,然后5 | 0的结果是5 单根管道是。 位运算

我刚刚看到在一些JavaScript中使用了这个快捷方式

(9 + 2) / 2|0; // results in 5 
当你做普通数学时,结果是5.5

为什么顶部表达式会产生Math.floor((9+2)/2)? 有人能指出那根管子在干什么吗?我不懂捷径

  • 首先,JavaScript中
    (9+2)/2
    的结果是
    5.5
  • 然后应用一个位
    操作。对于JavaScript,逐位操作不能直接在64位表示上工作。相反,该值被转换为32位整数,这意味着
    5.5
    5
    ,然后
    5 | 0
    的结果是
    5
  • 单根管道是。
    位运算符只允许整数值,所以小数点后的值将被丢弃

    按位或
    运算符|采用2位模式,并对每对对应位执行或运算
    下面的示例将对此进行解释

    1010                            
    1100       
    ----------bitwise or
    1110       
    
    这是一个按位的“或”,看看这个问题: