双波浪线运算符:深入了解 ~~
在 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。
以上是JavaScript 中的双波浪号 (~~) 运算符有何作用?的详细内容。更多信息请关注PHP中文网其他相关文章!