为什么 0 === -0 是成立的,但是 1/0 === 1/-0 不成立?

6
var a = 0;
var b = -a;

当我将以下代码发布到控制台时,我得到了true
console.log(a === b); // true

但是当我使用它进行一些计算时,结果为false

console.log(1/a === 1/b); // false

为什么会这样呢?


7
因为 Infinity-Infinity 不相等? - jonrsharpe
5
我没有看到非常明显的理由来downvote这个问题。是的,如果你在控制台中尝试1 / 01 / -0,你会看到Infinity-Infinity,并且如果你查看规范,你会发现虽然0-0被认为是相等的,但Infinity-Infinity不是。但这是一个复杂的领域,询问它似乎并不不合理。 - T.J. Crowder
2
@SumnerEvans 这不是数学,这是JavaScript! - jonrsharpe
基本上,因为IEEE 754-2008这样规定。 - Bergi
1
你可以使用 Object.is 来区分 -00 - Bergi
显示剩余3条评论
1个回答

7

这是因为按照抽象相等比较算法,Infinity == -Infinity的结果为false。

1/0会返回Infinity,而1/-0会返回-Infinity。因此两者不相等,所以返回false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接