nodejs中的isNaN函数

aze*_*ro0 10 nan node.js

为什么nodejs中的isNaN函数在以下情况下返回false

isNaN(''),isNaN('\n'),isNaN('\t')
Run Code Online (Sandbox Code Playgroud)

这很奇怪.

有人有任何想法,因为我认为NaN代表的不是一个数字.

有人可以澄清一下

提前致谢!

Esa*_*ija 15

因为您没有传递数字,它会将其转换为数字.所有这些转换为0哪些是0和不NaN

Number('')
0
Number('\n')
0
Number('\t')
0
isNaN(0)
false
Run Code Online (Sandbox Code Playgroud)

请注意,这NaN不代表"不是JavaScript编号".实际上它与JavaScript完全分开,并且存在于支持IEEE-754浮点数的所有语言中.

如果你想检查某些东西是否是javascript编号,那么检查就是

if (typeof value === "number") {

}
Run Code Online (Sandbox Code Playgroud)

  • 注意,值"NaN"是Javascript Number =>`typeof NaN ==='number'// true` (6认同)

Ube*_*ady 5

isNan()旨在帮助检测“数学上未定义”的事物 - 例如0/0-

node
> isNaN(0/0)
true
> isNaN(1/0)
false
> isNaN(Math.sqrt(-1))
true
> isNaN(Math.log(-1))
true
Run Code Online (Sandbox Code Playgroud)

您在这个问题中得到的关于如何检测数字的其他建议是可靠的。