Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么要使用'n==0',因为'-0==0'和'0==0'都是真的?_Javascript_Typescript_Comparison - Fatal编程技术网

Javascript 为什么要使用'n==0',因为'-0==0'和'0==0'都是真的?

Javascript 为什么要使用'n==0',因为'-0==0'和'0==0'都是真的?,javascript,typescript,comparison,Javascript,Typescript,Comparison,我正在读《你不知道JS》一书,在那里找到了这段代码。此函数用于检查通行证编号是否为-0。我无法理解为什么在比较中提到第一个条件,因为它总是会是真的(除非我理解错误)。请帮忙。对于零,它总是正确的。您希望isNegZero(n)不仅对+0为false,而且对任何非零的数字也是false function isNegZero(n) { n = Number( n ); return (n === 0) && (1 / n === -Infinity); } 返回值是

我正在读《你不知道JS》一书,在那里找到了这段代码。此函数用于检查通行证编号是否为-0。我无法理解为什么在比较中提到第一个条件,因为它总是会是真的(除非我理解错误)。请帮忙。

对于零,它总是正确的。您希望
isNegZero(n)
不仅对
+0
为false,而且对任何非零的数字也是false

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

返回值是两个比较值&&。由于它短路,如果传递了0或-0之外的任何数字,它将运行第一次比较,然后返回false,而不需要查看第二次比较。

可能会看到。
> let n = -Number.MIN_VALUE
> n === 0
false
> 1 / n === -Infinity
true