var a = 13.6 | 0; //a == 13
这是如何工作的?
除了无符号右移>>> 之外的所有按位运算都适用于带符号的32位整数。因此使用按位运算会将float转换为整数。
与比Math.floor有什么优势?
快一丢丢
有什么缺点?
- 不会传递 jsLint
- 仅限于32位无符号整型
- 有些时候会有奇怪的表现
Math.floor(NaN) === NaN
而
(NaN | 0) === 0
实际上,这不是约等于而是截断
在ECMAScripts 6中,类似于Math.trunc