В JavaScript грамматика Числового литерала выражается так:
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
значения или "разбираемые" числовые строки, взгляните на эту функцию .