我经常在JavaScript中看到这个:
var val = (myvar / myothervar) | 0;
Run Code Online (Sandbox Code Playgroud)
其中,据我了解是许多快捷键地板在JavaScript中的值(如之一~~,和>> 0等).但是,我最近看了一段代码:
var val = Math.floor(myvar/ myothervar)|0;
Run Code Online (Sandbox Code Playgroud)
他们使用Math.floor()然后也做了一个按位OR 0.作者多次这样做,所以这不仅仅是他们曾经做过的错字.两者都有什么收获?
对于好奇,我指的代码可以在这里找到
你可能没有想到:
Math.floor(NaN) == NaN(好吧,不是真的,但是Math.floor(NaN)是NaN)Math.floor(NaN) | 0 == 0也适用于 Infinity
正如@apsillers所指出的,这可能是消除Infinitys:
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
Run Code Online (Sandbox Code Playgroud)