在Javascript中
parseInt(null)返回一个NaN
parseNumber(null)还返回一个NaN
isNaN('abcd')返回true,因为'abcd‘当然不是一个数字,
isNaN(5)返回false
但奇怪的是
isNaN(null)返回false,这意味着它是一个数字,但正如我们在parseNumber中看到的,它被看作是NaN。
parseInt和isNaN看待null的方式似乎不一致,一个人把它看作NaN,而另一个人把它看作一个数字。为什么它们不一致?
发布于 2018-01-19 00:02:37
在isNaN()中发生的第一件事是,这个参数被强迫为一个数字。也就是说,这个函数看起来像是:
function isNaN(n) {
n = +n;
// ...
}当null被胁迫到一个数字时,值是0。那不是NaN。
实际上,不应该使用isNaN函数来测试一个值是否是一个数字;这不是它的目的。这是为了测试一个数字--也就是你所知道的数字--是否是NaN。
在现代运行时,有Number.isNaN(),它不执行那种类型的强制。当然,有了这一点,null仍然不是NaN。
https://stackoverflow.com/questions/48332213
复制相似问题