JavaScript中的地板编号:~~ n,n | 0或Math.floor(n)?

Mic*_*rne 4 javascript integer

我最近发现了一些其他方法来删除JavaScript中除数字值的小数部分Math.floor(n),特别是双位NOT运算符~~n并执行按位或0 n|0.

我想知道这些方法之间的区别是什么,不同的方案是推荐一种方法而不是另一种方法.

jas*_*pet 7

所有位运算符的操作数都转换为带符号的32位整数:

Math.floor(2147483648) // 2147483648
2147483648 | 0         // 2147483648
~~2147483648           // 2147483648

Math.floor(2147483649) // 2147483649
2147483649 | 0         // -2147483647
~~2147483649           // -2147483647
Run Code Online (Sandbox Code Playgroud)

所以使用Math.floor();


jos*_*736 6

向下一个看你的代码和使用的人清楚Math.floor().

性能提升1%-40%并不值得,所以不要让代码混乱,难以维护.

  • (所以他们不必问"什么是n | 0意味着什么?"在SO ...) (3认同)