2011-06-07 36 views
20

我无法谷歌〜运营商了解更多关于它。有人能以简单的语言向我解释它的用途以及如何使用它?如何:〜运算符?

+0

了解更多关于它的好地方是[Google Tech Talk](http://www.youtube.com/user/GoogleTechTalks?),然后搜索javascript – Ibu 2011-06-07 04:09:29

回答

23

这是一个bitwise NOT

最常见的用途我见过一个双位NOT,去除一个数的小数部分,e.g:

var a = 1.2; 
~~a; // 1 

为什么不使用Math.floor?微不足道的原因是它速度更快,并使用更少的字节。更重要的原因取决于你想如何对待负数。试想一下:

var a = -1.2; 
Math.floor(a); // -2 
~~a; // -1 

所以,使用Math.floor舍去,使用~~斩去(不是一个技术术语)

+6

很明显,但对于任何感兴趣的人(我认为)“切断”的技术术语将是“截断”。使用双位不是为了这个目的可能会更快,并且使用比'Math.floor'更少的内存,但是由于JavaScript对数字值的整数,浮点数等没有区别,所以得到的数字仍然会使用相同数量的内存。 – 2011-06-07 04:40:46

+1

我更喜欢parseInt(a) – JohnJohnGa 2011-08-26 08:39:30

1

这是一个代字符,它是位运算符NOT。