为什么“〜undefined”是
这个问题在这里已经有了答案:
~
是按位不是。 它使用ToInt32
将参数转换为数字。 ToInt32
被定义为:
...
反过来, ToNumber(undefined)
返回NaN
,所以根据步骤3, ToInt32
返回0
。
并且~0
是-1
。
不能在位表示在JS例如每一件事情“未定义,NAN”被视为一个0
或0000000000000b
为~
运营商,因为它转换操作数为整数签订看到@felixkling回答关于这一点,因为操作的详细信息~
是BITwise不是或1s补码,它翻转这些位,所以语句导致111111111111b
中的序列为1
,当在二进制级别处理数字时,MSB(最高有效位)被视为sign
因此当将所有0s
转换为1s
,结果在十进制值-1
试试~0
的实例。 并使用此代码获取数字的二进制表示(-3 >>> 0).toString(2))
显然, undefined
的位表示全部为0
。 这可以通过以下方式看出: undefined | 0
undefined | 0
评估为0
。 正因为如此,我们知道undefined
的比特表示全部为零。
如果我们现在财政投融资中的所有位(至极正是~
那样)我们得到了所有1
S的是表示-1
。
所有这些都是因为javascript的类型凝聚
链接地址: http://www.djcxy.com/p/75039.html上一篇: Why "~undefined" is