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-false isNaN 不采用“整数”,它期望一个数字(它们都是 IEEE-754 双精度数,例如 isNaN(0.5) 产生 false),这就是为什么它尝试将参数值 type convert 为 Number【参考方案2】:

这是因为""javascript 中等于零。试试"" == 0。这意味着,如果您尝试在数值方程中对其进行评估,它将显示为 0。另一方面,当您对其进行解析时,它会意识到那里什么都没有。

作为parseInt 的替代品,您可以使用Math.floor。这将为您提供0 for ""

【讨论】:

“等价”到底是什么意思?

以上是关于isNaN() 与 parseInt() 混淆的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript系统函数(parseInt()函数parseFloat()函数isNaN()函数eval()函数)

js中isNaN和Number.isNaN的区别

parseInt 总是返回 NaN?

js判断值是否是数字

Sonarqube 抛出错误删除“isNaN”的此覆盖

javascript笔记