首頁 > web前端 > js教程 > 主體

## JavaScript 中 ~~(雙波浪號)運算子的作用是什麼?

Mary-Kate Olsen
發布: 2024-10-30 09:16:03
原創
203 人瀏覽過

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

探索JavaScript 中神奇的~~(雙波浪號)運算符

在JavaScript 冒險領域,你可能遇到過神秘的 運算子。乍一看,它類似於單一波形符號 ~,一個可靠的位元 NOT 運算子。這是否意味著 執行雙重 NOT,只是傳回相同的值?讓我們更深入地了解它的真正目的。

揭開真相

運算子的秘密在於它解釋運算元的方式。與單一波形符號不同, 將其輸入轉換為帶符號的 32 位元整數,即使它們是數字或字串。透過此轉換,它執行位元運算,有效地刪除小數點後的所有內容。

換句話說,該運算符的行為類似於以下函數:

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

但是,它只能正確工作對於-(231) 和2 31 - 1 之間的值,以避免溢位。

為什麼 ~~ 不是 NOT 中的 NOT

重要的是要了解 並不等同於應用兩次 NOT 運算。第一個 NOT 運算將這些位元反轉,而第二個 NOT 運算只是將它們再次反轉,從而得到原始值。相反,直接截斷數字的小數部分。

例如數字-43.2,用32位元二進位表示為:

<code class="binary">11111111111111111111111111010101</code>
登入後複製
登入後複製

應用~~後,它變成:

<code class="binary">11111111111111111111111111010101</code>
登入後複製
登入後複製

,翻譯回-43 。這表明 ~~ 有效地刪除了數字的小數部分。

注意事項

雖然~~ 對於將字串參數轉換為數字很有用,但它存在溢出風險非整數固有的不準確性使其成為一個冒險的選擇。考慮使用更簡單的方法,例如 x 或 Number(x)。

總之,~~ 是一個有趣的運算符,可以從數字或字串中截斷十進制值。透過了解其獨特的行為和限制,您可以在 JavaScript 冒險中負責任地利用它的力量。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!