~~和Math.floor有什么区别?
在前端开发中,~~ 和 Math.floor 都可以用于取整,但它们的工作原理和结果在某些情况下是不同的。
-
~~操作符:~~是一个双位非操作符,它首先对一个数字进行一次位非操作,然后再进行一次。这个操作的效果是将浮点数转换为整数,但它并不是简单的向下取整,而是向零取整。也就是说,对于正数,它会向下取整,对于负数,它会向上取整。这种行为类似于 JavaScript 的Math.trunc函数。- 例子:
~~4.9会返回4,~~-4.9会返回-4。
-
Math.floor函数:Math.floor是一个 JavaScript 内置函数,用于对一个数进行向下取整。也就是说,它会返回不大于一个给定数字的最大整数。- 例子:
Math.floor(4.9)会返回4,Math.floor(-4.9)会返回-5。
主要区别:
- 对于正数,
~~和Math.floor的效果是相同的,都会向下取整。 - 对于负数,
~~是向零取整,而Math.floor是向下取整。这是两者之间的主要区别。
在前端开发中,选择使用哪种方法取决于你的具体需求。如果你需要始终向下取整,无论数字是正还是负,那么应该使用 Math.floor。如果你需要向零取整,那么可以使用 ~~ 或 Math.trunc(如果你的环境支持这个函数)。
浙公网安备 33010602011771号