通过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