在Javascript中
parseInt(null)
返回NaN
parseNumber(null)
也会返回NaN
isNaN('abcd')
返回true
,因为' abcd'当然不是数字,
isNaN(5)
返回false
但很奇怪
isNaN(null)
会返回false
,这是奇数,意味着它是一个数字,但正如我们在parseNumber
中看到的那样,它被视为NaN
parseInt
和isNaN
查看null的方式之间似乎存在不一致,一方将其视为NaN,另一方将其视为数字。为什么它们不一致?
答案 0 :(得分:3)
isNaN()
中发生的第一件事是参数被强制转换为数字。也就是说,它就好像功能看起来像:
function isNaN(n) {
n = +n;
// ...
}
当null
被强制转换为数字时,该值为0
。那不是NaN
。
isNaN
函数确实不应该用作测试来查看值是否为数字;那不是它的意思。用于测试以查看号 - 即您知道的是一个数字 - 是NaN
。
在现代运行时,有Number.isNaN()
,不执行该类型强制。当然,有了这个,null
仍然是
不是NaN
。