viv*_*man 7 javascript validation function decimal
为什么Javascript函数调用isNaN(123.)返回false?(注意123之后的点(.)).这是一个普遍接受的数字还是会导致下游错误?
我正在使用isNaN和split来验证值是否是有效小数.isNaN是否存在跨浏览器问题?我应该使用定制的实现吗?
谢谢.
CMS*_*CMS 18
在JavaScript中,Numeric Literal的语法表达如下:
DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt 
如您所见,DecimalDigits点后面的部分是可选的(opt后缀).
var n = 123.;
typeof n; // "number"
我不建议使用isNaN函数来检测数字,因为类型强制可能会使某些东西看起来很奇怪:
isNaN(""); // false, a empty string coerces to zero
isNaN("\n\t"); // false, a white-space string coerces to zero
isNaN(true); // false, boolean true coerces to 1
isNaN(false); // false, boolean false coerces to zero
isNaN(new Date); // false, Date objects coerce to its numeric timestamp
// etc...
isNaN应该只用于比较NaN,因为:
NaN == NaN; // false!
IsNaN(NaN); // true
如果你想检测Number对象,Number值或"可解析的"数字字符串,请看看我之前发布的这个函数.