Javascript isNaN和null

时间:2018-01-18 23:59:06

标签: javascript

在Javascript中

parseInt(null)返回NaN
parseNumber(null)也会返回NaN

isNaN('abcd')返回true,因为' abcd'当然不是数字,
isNaN(5)返回false

但很奇怪

isNaN(null)会返回false,这是奇数,意味着它是一个数字,但正如我们在parseNumber中看到的那样,它被视为NaN

parseIntisNaN查看null的方式之间似乎存在不一致,一方将其视为NaN,另一方将其视为数字。为什么它们不一致?

1 个答案:

答案 0 :(得分:3)

isNaN()中发生的第一件事是参数被强制转换为数字。也就是说,它就好像功能看起来像:

function isNaN(n) {
    n = +n;
    // ...
}

null被强制转换为数字时,该值为0。那不是NaN

isNaN函数确实不应该用作测试来查看值是否为数字;那不是它的意思。用于测试以查看 - 即您知道的是一个数字 - 是NaN

在现代运行时,有Number.isNaN()执行该类型强制。当然,有了这个,null 仍然是  不是NaN