2011-06-07 35 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。