我经常在JavaScript中看到这样的情况:
var val = (myvar / myothervar) | 0;据我所知,这是在JavaScript (如~~和>> 0等)中构建值的众多捷径之一。然而,我最近看了一段代码,它做到了这一点:
var val = Math.floor(myvar/ myothervar)|0;他们使用了Math.floor(),然后还对0进行了逐位OR运算。作者这样做了很多次,所以他们不只是犯了一次打字错误。同时做这两件事你会得到什么?
出于好奇,我所指的代码可以在here中找到
发布于 2013-04-17 04:52:02
你可能没有想过:
Math.floor(NaN) == NaN (好吧,不是真的,但Math.floor(NaN)是NaN)Math.floor(NaN) | 0 == 0也适用于Infinity
正如@apsiller所指出的,这可能是为了消除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); // 0https://stackoverflow.com/questions/16046825
复制相似问题