NaN 是一个 number 类型, 那么它在 js 内部是一个数值吗以及怎么表示的
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 是有两种状态的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我觉得……别想太多,只是凑巧。
~
是按位取反,取反两次当然是本身。按位取反是这么玩的:
补码原码就不解释了,基础知识。
为了你这个问题我特地去翻了ECMAScript 1st Edition (ECMA-262)
我们来看这个飘号
~
.可以看到,里面第三个处理步骤,就是要将值通过
ToInt32()
,这个当然也是有标准实现的:这里指出了,在ToInt32的时候,
NaN
(包括正负无穷Infinity
)统一按0处理。这就是你这个问题的答案
所以同理也可以得到这个:
https://www.zhihu.com/questio...
「因此 NaN 一共有
(2^52 - 1)* 2
个值(乘以 2 是因为有正负)」