为了账号安全,请及时绑定邮箱和手机立即绑定

NaN 是一个 number 类型, 那么它在 js 内部是一个数值吗以及怎么表示的

NaN 是一个 number 类型, 那么它在 js 内部是一个数值吗以及怎么表示的

桃花长相依 2019-03-23 19:15:21
NaN 在 JS 类似怎么表示的?typeof NaN === 'number', NaN 是一个 number 类型,那它在 js 中是如其它数值一样是个 64 为浮点数吗?感觉 NaN 和 0 有些类似对于数值类型 ~~num 会转化为一个 32 位的整型,如果原值也为一个不大于 2 ** 31 的整型,则会相同    let num = 0;    ~num; // -1    ~~num; // 0    ~~num === num; // true    // 再看 NaN    ~NaN; // -1    ~~NaN; // 0    ~~NaN === num那么 NaN 时候是一个特殊的 0,或者说 0 是有两种状态的?
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

我觉得……别想太多,只是凑巧。

~是按位取反,取反两次当然是本身。

按位取反是这么玩的:

https://img1.sycdn.imooc.com//5cb2a0430001097604980361.jpg

补码原码就不解释了,基础知识。

为了你这个问题我特地去翻了ECMAScript 1st Edition (ECMA-262)

我们来看这个飘号~.

https://img1.sycdn.imooc.com//5cb2a0470001f84206940172.jpg

可以看到,里面第三个处理步骤,就是要将值通过ToInt32(),这个当然也是有标准实现的:

https://img1.sycdn.imooc.com//5cb2a04a0001fed408000367.jpg

这里指出了,在ToInt32的时候,NaN(包括正负无穷Infinity)统一按0处理。
这就是你这个问题的答案

所以同理也可以得到这个:
https://img1.sycdn.imooc.com//5cb2a04d0001881202240127.jpg


查看完整回答
反对 回复 2019-04-14
  • 1 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信