我只是在玩NaN和isNaN()。有趣的是,我发现NaN的“类型”是一个数字!作为一名好奇的学习者,我自然而然地想到:“如果NaN是一个数字,例如4,则isNaN(NaN)也应该返回FALSE,就像isNaN(4)是FALSE”。
因此,我对此进行了一个简单的实验。当然,它返回TRUE!我知道“好吧,NaN是NaN,所以isNaN(NaN)是真实的”。但是我对JavaScript的思考过程更感兴趣。当NaN的类型为NUMBER时,JS如何评估isNaN(NaN)为真?下面显示的代码是我为研究此问题所做的事情:
让测试= 4;
console.log(1. We will test this value: ${test}.
1-A. Typeof yields: ${typeof test};
1-B. isNaN() yields: ${isNaN(test)};
1-C. Number.isNaN() yields: ${Number.isNaN(test)}
)
test = NaN;
console.log(2. We will test this value: ${test}.
2-A. Typeof yields: ${typeof test};
2-B. isNaN() yields: ${isNaN(test)};
2-C. Number.isNaN() yields: ${Number.isNaN(test)}
)
结果是: 1-A / 1-B / 1-C =数字/错误/错误 2-A / 2-B / 2-C =数字/真/真
正如我之前解释的那样,这个结果对我来说很有意义,NaN实际上就是NaN。但是我对JS的思考过程更感兴趣。当typeof都是数字时,如何评估上述结果?
答案 0 :(得分:0)
可能重复链接中的某些答案可能对此问题有答案,但我想补充一点,熟练和经验丰富的开发人员的话有时可能是正确的,但此问题的正确答案应在下面:>
要了解某件产品的工作原理,请查看描述该产品的规格和工作原理的手册。
例如,在这种情况下,问题是javascript如何使用NaN
函数评估isNaN()
对象,这最终是所述函数和对象的规范问题。因此,我们看一下在ecmascript文档中找到的isNaN()函数的描述,其中也有Number.isNaN()函数的描述供比较。您还可以查看NaN对象是什么的描述,以更好地理解测试结果背后的概念。
我希望这个答案有帮助。