为什么“〜undefined”是

这个问题在这里已经有了答案:

  • 在表达式之前,代字号在做什么? 6个答案

  • ~是按位不是。 它使用ToInt32将参数转换为数字。 ToInt32被定义为:

  • 让数字为ToNumber(参数)。
  • ReturnIfAbrupt(数字)。
  • 如果数字是NaN,+ 0,-0,+∞或-∞,则返回+0。
    ...
  • 反过来, ToNumber(undefined)返回NaN ,所以根据步骤3, ToInt32返回0

    并且~0-1


    不能在位表示在JS例如每一件事情“未定义,NAN”被视为一个00000000000000b~运营商,因为它转换操作数为整数签订看到@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

    下一篇: attributes vs properties