就像问题的标题所说,我想避免在isNaN()函数上进行内部数字转换。

isNaN()函数尝试将输入参数转换为调用Number()函数的数字。

例如,如果用户在使用isNaN()函数测试过的输入文本中输入值false,以查看输入数据是否为“非数字”,则结果将为“ false”,因为Number( )函数将值false转换为0。

那么,这可能吗?例如,使用编译指示或其他方法?

谢谢!

最佳答案

Number.isNaN()函数的工作方式不同于全局isNaN()Number.isNaN()不执行任何类型强制。

现在,重要的是要了解NaN概念的含义。它不仅仅表示“不是数字的东西”。它与浮点系统有关,特别是与毫无意义的值有关。如果要检查某个未知值是否为数字,则有更好的处理方法。 isNaN函数实际上是关于数字的。

一个简单的测试:

function isNumberReally( n ) {
  return n === Number(n);
}


它使用Number构造函数执行转换(如果可以)。然后,使用no-conversions ===运算符检查结果是否与原始比较相等。只有真实的原始数字才可以通过该测试。像“ 123”这样的字符串不会。

关于javascript - 是否可以避免在JavaScript中的isNaN()函数上进行内部数字转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20596261/

10-10 21:44