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是一个“不是数字”的函数,当它没有给它作为参数时它返回真,当给出一个数时它是假的