This question already has answers here:
Why is isNaN(null) == false in JS?
(9 个回答)
3年前关闭。
在 JavaScript 中
但奇怪的是
当
在现代运行时,有
不是
(9 个回答)
3年前关闭。
在 JavaScript 中
parseInt(null)
返回一个 NaN
parseNumber(null)
也返回一个 NaN
isNaN('abcd')
返回 true
,因为 'abcd' 当然不是数字,isNaN(5)
返回 false
但奇怪的是
isNaN(null)
返回 false
,这很奇怪,因为它暗示它是一个数字,但正如我们在 parseNumber
中看到的那样,它被视为 NaN
parseInt
和 isNaN
将 null 视为 NaN 而另一种将其视为 Number 的方式似乎不一致。为什么它们不一致? 最佳答案
在 isNaN()
中发生的第一件事是参数被强制转换为一个数字。也就是说,就好像函数看起来像:
function isNaN(n) {
n = +n;
// ...
}
当
null
被强制为一个数字时,值为 0
。那不是 NaN
。isNaN
函数真的不应该用来测试一个值是否是数字;这不是它的目的。它用于测试一个数字——也就是说,你知道的某个数字——是否是 NaN
。在现代运行时,有
Number.isNaN()
,它不执行该类型强制。当然,有了这个,null
仍然是不是
NaN
。关于Javascript isNaN 和 null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48332213/
10-11 23:41