二重チルダ演算子: ~~
の詳細 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 の NOT としての二重チルダを理解する
~~ が NOT 演算の NOT を効果的に実行する方法を理解するには、次のことを考慮してください。次の例:
数値 -43.2 は、符号付き 32 ビット 2 進数として表されます:
-43.2 = 11111111111111111111111111010101 (2)
ビット単位の適用 NOT:
NOT -43.2 = 00000000000000000000000000101010 (2) = 42
の 2 番目の適用ビット単位の NOT:
NOT 42 = 11111111111111111111111111010101 (2) = -43
~~ 演算子は、NOT 演算の NOT を直接的な方法で実行しないにもかかわらず、2 つの連続するビット単位の NOT 演算と同じ結果を生成することに注意してください。
以上が二重チルダ (~~) 演算子は JavaScript で何をするのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。