雙波浪線運算符:深入了解~~
在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中文網其他相關文章!