Я бы не рекомендовал функцию isNaN
для определения чисел из-за приведения типа Java Script.
Ex:
isNaN(""); // returns false (is number), a empty string == 0
isNaN(true); // returns false (is number), boolean true == 1
isNaN(false); // returns false (is number), boolean false == zero
isNaN(new Date); // returns false (is number)
isNaN(null); // returns false (is number), null == 0 !!
Вам также следует помнить, что isNaN
вернет false (является числом) для чисел с плавающей запятой.
isNaN('1e1'); // is number
isNaN('1e-1'); // is number
Я бы рекомендовал использовать эту функцию вместо:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}