就像问题的标题所说,我想避免在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/