var a = 0;
var b = -a;
当我将以下代码发布到控制台时,我得到了
true
:console.log(a === b); // true
但是当我使用它进行一些计算时,结果为false
:
console.log(1/a === 1/b); // false
为什么会这样呢?
var a = 0;
var b = -a;
true
:console.log(a === b); // true
但是当我使用它进行一些计算时,结果为false
:
console.log(1/a === 1/b); // false
为什么会这样呢?
这是因为按照抽象相等比较算法,Infinity == -Infinity
的结果为false。
1/0
会返回Infinity
,而1/-0
会返回-Infinity
。因此两者不相等,所以返回false
。
Infinity
和-Infinity
不相等? - jonrsharpe1 / 0
和1 / -0
,你会看到Infinity
和-Infinity
,并且如果你查看规范,你会发现虽然0
和-0
被认为是相等的,但Infinity
和-Infinity
不是。但这是一个复杂的领域,询问它似乎并不不合理。 - T.J. CrowderObject.is
来区分-0
和0
。 - Bergi