javascript有负零的概念吗
考虑以下问题
var l = console.log.bind(console);
l(-0); // 0
l(0); // 0
l(0 === -0); // true
l(0 == -0); // true
l(1 / 0); // Infinity
l(1 / -0); // -Infinity
- 为什么负零等于零?
- 既然相等,为什么它的行为不同?
额外问题:
0
/-0
组合是唯一使相同对象表现不同的组合吗?
我知道 NaN
/NaN
是不相等对象行为相同的组合。
Consider the following
var l = console.log.bind(console);
l(-0); // 0
l(0); // 0
l(0 === -0); // true
l(0 == -0); // true
l(1 / 0); // Infinity
l(1 / -0); // -Infinity
- Why is negative zero equal to zero ?
- Given it's equal why does it behave differently ?
Bonus question:
- Is the
0
/-0
combination the only combination where equal objects behave differently?
I know NaN
/NaN
is a combination where non-equal objects behave the same.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为 IEEE 754 要求它。
我相信是这样。在 Javascript 中,只有数字有特殊的
===
算法,并且 0、-0、NaN 是唯一的特殊情况(ECMA-262 §11.9.6)。Because IEEE 754 demands it.
I believe so. In Javascript, only Numbers have a special
===
algorithm, and 0, -0, NaN are the only special cases there (ECMA-262 §11.9.6).