由于typeof(NaN)
是number
,其值应为numeric
,但根据以下代码,它不是数字。我想了解下面代码片段背后的后台进程。
var checkVal = NaN;
if (checkVal > 0) {
console.log("NaN is greater than 0");
} else {
console.log("NaN is less than 0");
}
if (checkVal < 0) {
console.log("NaN is less than 0");
} else {
console.log("NaN is greater than 0");
}
if (checkVal == 0) {
console.log("NaN is equal to 0");
} else {
console.log("NaN is not equal to 0");
}
&#13;
在上面的代码片段中,在每个条件中它都会进入else块,这让我们感到困惑,知道NaN
的值。
根据Bergi评论,NaN
的值为NaN
。因此,checkVal === NaN
应为true,但返回false。
var checkVal = NaN;
if (checkVal === NaN) {
console.log("true");
} else {
console.log("false");
}
&#13;
答案 0 :(得分:1)
NaN
表示“不是数字”。它是一个特殊值,表示计算结果要么是不可能的(除以零,f.e。),要么不能使用浮点格式存储。它表示使用浮点格式未知或无法计算(或存储)的值。
NaN
与其他任何内容的比较都没有任何意义。 NaN
即使对自己也不平等。发生这种情况是因为它不是特定值。作为未知值,很可能不等于与不同的未知值。
在documenation of NaN
中阅读更多内容。