首頁  >  文章  >  web前端  >  JavaScript 中的雙波浪號 (~~) 運算子有何作用?

JavaScript 中的雙波浪號 (~~) 運算子有何作用?

DDD
DDD原創
2024-10-25 11:39:021010瀏覽

What Does the Double Tilde (~~) Operator Do in JavaScript?

雙波浪線運算符:深入了解~~

在JavaScript 中,您可能會遇到~~ 運算符,也稱為“雙波浪號”運算符。雖然單一波形符號 ~ 代表位元 NOT,但您可能想知道雙波形符號扮演什麼角色。

與直覺相反,~~ 不執行 NOT 運算的 NOT。相反,它隱式地將其操作數轉換為 32 位元整數並刪除小數點後的所有內容。此行為適用於數字和字串。

從技術上講,~~ 的行為類似於以下函數:

<code class="javascript">function(x) {
  if(x < 0) return Math.ceil(x);
  else return Math.floor(x);
}</code>

但是,它僅在操作數x 在以下範圍內時提供準確的結果-(2^ 31) 到2^31 - 1. 超出這個範圍,就會發生溢出,導致數字「環繞」。

使用 ~~ 進行字串參數的數字解析似乎很誘人,但這是不被鼓勵的。非整數的溢位和不正確性使其成為一個糟糕的選擇。喜歡 x 或 Number(x)。

將雙波浪線理解為NOT of NOT

要了解~~ 如何有效地執行NOT 或NOT 運算,請考慮以下範例:

數字-43.2 表示為帶符號的32 位元二進位數:

-43.2 = 11111111111111111111111111010101 (2)

應用位元NOT:

NOT -43.2 = 00000000000000000000000000101010 (2) = 42

第二個應用位元NOT:

NOT 42 = 11111111111111111111111111010101 (2) = -43

第二個應用位元NOT:

請注意,~~ 運算子產生與兩個連續的位元NOT 運算相同的結果,即使它不以直接方式執行NOT 運算的NOT。

以上是JavaScript 中的雙波浪號 (~~) 運算子有何作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn