isNaN() 与 parseInt() 混淆
Posted
技术标签:
【中文标题】isNaN() 与 parseInt() 混淆【英文标题】:isNaN() vs. parseInt() confusion 【发布时间】:2012-01-06 11:52:51 【问题描述】:有些奇怪。
为什么
与isNaN("")
我得到False
但是
与parseInt("")
我得到NaN
?
【问题讨论】:
***.com/questions/825402/why-does-isnan-equal-false的可能重复 因为isNaN
不使用parseInt
?
关键是要明白类型转换和解析的区别,isNaN
在幕后,会对其参数做类型转换Number
类型,而 parseInt
将尝试 parse 提供的字符串。另见:***.com/questions/4090518/…
这能回答你的问题吗? Why does isNaN(" ") (string with spaces) equal false?
【参考方案1】:
isNaN
将整数作为参数 - 因此 JS 将 ""
转换为 0
parseInt
将字符串作为参数 - 因此空字符串不是数字
【讨论】:
已经回答 - 重复 ***.com/questions/825402/why-does-isnan-equal-falseisNaN
不采用“整数”,它期望一个数字(它们都是 IEEE-754 双精度数,例如 isNaN(0.5)
产生 false
),这就是为什么它尝试将参数值 type convert 为 Number【参考方案2】:
这是因为""
在 javascript 中等于零。试试"" == 0
。这意味着,如果您尝试在数值方程中对其进行评估,它将显示为 0。另一方面,当您对其进行解析时,它会意识到那里什么都没有。
作为parseInt
的替代品,您可以使用Math.floor
。这将为您提供0
for ""
。
【讨论】:
“等价”到底是什么意思?以上是关于isNaN() 与 parseInt() 混淆的主要内容,如果未能解决你的问题,请参考以下文章