我的一位同事偶然发现了一种使用按位或计算浮点数的方法:
var a = 13.6 | 0; //a == 13
我们正在谈论它并想知道一些事情。
Math.floor
谢谢。
它是如何工作的?我们的理论是使用这样的运算符将数字转换为整数,从而删除小数部分
除无符号右移之外的所有按位运算都>>>适用于有符号的 32 位整数。因此,使用按位运算会将浮点数转换为整数。
>>>
它比做 Math.floor 有什么优势吗?也许它有点快?(双关语不是故意的)
http://jsperf.com/or-vs-floor/2似乎稍快一些
它有什么缺点吗?也许在某些情况下它不起作用?清晰度是显而易见的,因为我们必须弄清楚,好吧,我正在写这个问题。
Math.floor(NaN) === NaN
(NaN | 0) === 0