isNaN在nodejs中的function

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

isNaN(''),isNaN('\n'),isNaN('\t') 

这很奇怪。

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

有人可以请澄清

提前致谢!

因为你没有传递给它一个数字,它会将其转换为数字。 所有这些转换为0这是0而不是NaN

 Number('') 0 Number('\n') 0 Number('\t') 0 isNaN(0) false 

请注意, NaN不代表“不是JavaScript数字”。 实际上,它与JavaScript完全分离,并且支持所有支持IEEE-754浮点的语言。

如果你想检查是否是一个JavaScript的数字,检查是

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

NaN是一个非常具体的事情:根据IEEE754规范( Wikipedia文章 ),它是一个浮点值,它具有适当的NaN标志。

如果你想检查一个string是否有数值,你可以使用parseFloat(str) ( parseFloat上的MDN )。 如果找不到任何有效的数字内容,或在查找数字之前发现无效字符,将返回一个NaN值。

所以请尝试做isNaN(parseFloat(str)) – 它给了我所有三个发布的例子。

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

 node > isNaN(0/0) true > isNaN(1/0) false > isNaN(Math.sqrt(-1)) true > isNaN(Math.log(-1)) true 

在这个问题上你如何检测数字的其他build议是可靠的。

isNaN是一个“不是数字”的函数,当它没有给它作为参数时它返回真,当给出一个数时它是假的

    Interesting Posts