为什么使用“ n === 0”,因为“ -0 === 0”和“ 0 === 0”都是正确的?

时间:2019-12-18 20:15:17

标签: javascript typescript comparison

function isNegZero(n) {
    n = Number( n );
    return (n === 0) && (1 / n === -Infinity);
}

我正在阅读You don't know JS这本书,并在那里找到了这段代码。此功能用于检查通过次数是否为 -0 。我无法理解为什么提到比较中的第一个条件,因为它总是正确的(除非我理解错误)。请帮忙。

2 个答案:

答案 0 :(得分:1)

始终为零。您不仅希望isNegZero(n)的{​​{1}}为false,而且还希望其不为零的任何数字都为false。

+0

答案 1 :(得分:0)

返回值是两个比较“ &&”在一起。由于它会短路,因此如果传递0或-0以外的任何数字,它将运行第一个比较,然后返回false,而无需查看第二个。