Math.floor()| 0

时间:2013-04-16 20:50:23

标签: javascript math

我经常在JavaScript中看到这个:

var val = (myvar / myothervar) | 0;

据我所知,这是在JavaScript中设置值的众多快捷方式之一(如~~>> 0等)。但是,我最近看了一段代码:

var val = Math.floor(myvar/ myothervar)|0;

他们使用了Math.floor(),然后还与0进行了按位OR。作者多次这样做,所以这不是他们曾经做过的错字。你们两个都得到了什么?

对于好奇的人,可以找到我所指的代码here

1 个答案:

答案 0 :(得分:9)

你可能没有想过:

  • Math.floor(NaN) == NaN(好吧,不是,但Math.floor(NaN)NaN
  • Math.floor(NaN) | 0 == 0

也与Infinity

相关

正如@apsillers所指出的,这可能是为了消除Infinity

var x = 1;
console.log(Math.floor(1 / x));      // 1
console.log(Math.floor(1 / x) | 0);  // 1
x = 0;
console.log(Math.floor(1 / x));      // Infinity
console.log(Math.floor(1 / x) | 0);  // 0