问题描述
在哪些情况下 n + 0
不等于 n
,其中 n 是一个数字(在 IEEE754 标准中,或更准确地说是双精度浮点数/64 位浮点数)?
所以:
function isNotSame(n: number) {
return n + 0 !== n;
}
返回真。 例如:
function isNotSame(n) {
return n + 0 !== n;
}
console.log(isNotSame(Number.NaN));
返回真;
解决方法
-0
如果您使用 Object.is
进行比较:
Object.is(-0 + 0,-0)
//=> false
NaN
如果:
NaN + 0 === NaN
//=> false
但是:
Object.is(NaN + 0,NaN)
//=> true