我阅读了在线教程,其中指出:
实际上,最可靠的转换检查是下面的regexp或isNumeric:
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n)
}
我的问题是,为什么不能将此功能简化为:
function isNumeric(n) {
return isFinite(n)
}
最佳答案
不能,不,如果有可能,parseFloat
可能不是一个数字开头,那么您希望在其中输入n
。但是可以简化为:
function isNumeric(n) {
return isFinite(parseFloat(n));
}
...因为isFinite(NaN)
为false,无论如何这就是函数返回不可解析数字的结果。值得注意的是,
parseFloat
将在第一个无效字符处停止并返回该点之前找到的任何数字,因此parseFloat("123abc")
是123
,而不是NaN
。如果您想验证整个字符串是否可以正确解析为浮点,请使用+
或Number()
:function isNumeric(n) {
return isFinite(+n); // Or: return isFinite(Number(n));
}
现在,如果您确定n
将总是已经是一个数字(不是 bool(boolean) 值,字符串或其他东西),那么可以,您可以跳过解析阶段。