通过ECMAScript 5.1 specification+0-0进行区分。

为什么+0 === -0评估为true

最佳答案

JavaScript使用IEEE 754 standard表示数字。从Wikipedia:



本文包含有关不同表示形式的更多信息。

因此,这就是为什么在技术上必须区分两个零的原因。



此行为在严格平等比较算法section 11.9.6中明确定义(部分强调我的行为):



(+0 == -0 btw也是如此。)

在逻辑上似乎将+0-0视为相等。否则,我们将不得不在我们的代码中考虑到这一点,而我个人不想这样做;)

注意:

ES2015引入了一种新的比较方法 Object.is Object.is明确区分-0+0:

Object.is(-0, +0); // false

07-24 22:24