什么是JavaScript中的“double tilde”(~~)运算符?
这个问题在这里已经有了答案:
那~~
是一个双NOT运算符。
它用作Math.floor()
的更快替代品。
它隐藏了代码的意图。
它是两个单独的代字符运算符,所以它按位补(不按位)两次。 这些操作互相取消,因此唯一剩下的效果是在应用第一个运算符之前完成的转换,即将该值转换为整数。
有些人使用它作为Math.floor
的更快选择,但速度差别并不那么显着,在大多数情况下,它只是微型优化。 除非你有一段真正需要优化的代码,否则你应该使用描述它的代码,而不是使用非操作副作用的代码。
2011-08更新:
通过优化浏览器中的JavaScript引擎,操作员和功能的性能发生变化。 对于目前的浏览器,在某些浏览器中使用~~
而不是Math.floor
的速度要快一些,而在某些浏览器中的速度并不快。 如果您真的需要额外的性能,您需要为每个浏览器编写不同的优化代码。
请参阅:波浪与地面
~(5.5) // => -6
~(-6) // => 5
~~5.5 // => 5 (same as Math.floor(5.5))
~~(-5.5) // => -5 (NOT the same as Math.floor(-5.5), which would give -6 )
有关更多信息,请参阅:
上一篇: What is the "double tilde" (~~) operator in JavaScript?
下一篇: Generating random whole numbers in JavaScript in a specific range?