当前位置:  开发笔记 > 编程语言 > 正文

为什么JavaScript中的"〜undefined"为-1?

如何解决《为什么JavaScript中的"〜undefined"为-1?》经验,为你挑选了2个好方法。

根据这篇文章,运行以下代码

> ~function () { console.log('foo');}()
  foo
  -1

众所周知,上述匿名函数的返回值是undefined.为什么~undefined-1?我找不到任何类似的问题.



1> Felix Kling..:

~是按位不是.它用于ToInt32将参数转换为数字.ToInt32定义为:

    设数为ToNumber(参数).

    ReturnIfAbrupt(数字).

    如果number为NaN,+ 0,-0,+∞或-∞,则返回+0.
    ...

反过来,ToNumber(undefined)返回NaN,所以根据步骤3,ToInt32返回0.

~0-1.



2> Minato..:

JS中的每个不能用位表示的东西,例如"undefined,NaN"被处理为0或者0000000000000b~运算符,因为它将操作数转换为有符号整数,请参阅@felixkling答案以获取更多详细信息,因为操作~不是BITwise或者1s补码翻转位,因此语句111111111111b作为一个序列产生1,当在二进制级别处理数字时,MSB(最高有效位)被视为a,sign因此当将所有转换0s1s它时,得到例如-1try的十进制值~0.并使用此代码获取数字的二进制表示(-3 >>> 0).toString(2))

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有