破解JavaScript 中的~~ 運算子
在深入研究遊戲實體庫時,您可能遇到神秘的~~ 運算符。它與 ~(位元 NOT)運算子的相似之處促使您質疑其功能。它只是一個雙重否定,會傳回相同的值嗎?
令人驚訝的是, ~~ 運算子實際上超越了其位元 NOT 的起源。它在 JavaScript 中有一個獨特的用途:消除小數點後的所有內容。
小數點刪除背後的原因
此行為源自於操作數隱式轉換為有符號 32執行位元運算之前的位元整數。因此,~~ 運算子的行為如下:
function(x) { if(x < 0) return Math.ceil(x); else return Math.floor(x); }
但是,需要注意的是,此轉換僅適用於輸入值(x) 落在-(2^31) 到2^31 - 1 . 超出這些邊界會導致資料溢出,可能導致意外行為。
使用 ~~
的優點和缺點儘管它能夠轉換從字符串到數字,應謹慎使用 ~~,因為它容易溢出。此外,其預期目的與數值轉換並不完全一致。相反,x 或 Number(x) 提供了更可靠和直觀的選項。
按位NOT 邏輯
理解為什麼~~ 充當32 位的雙重否定整數,讓我們考慮二進位-43.2:
十進位轉換到小數截斷之前的初始狀態。
以上是## JavaScript 中的 ~~ 運算子有什麼作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!