我阅读了在线教程,其中指出:
实际上,最可靠的转换检查是下面的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) 值,字符串或其他东西),那么可以,您可以跳过解析阶段。

09-29 20:35