Функция isNaN("")
выполняет приведение типа Строка к номеру
ECMAScript 3-5 определяет следующие возвращаемые значения для оператора typeof:
- неопределенный
- объект (ноль, объекты, массивы)
- логическое
- номер
- строка
- функция
Лучше обернуть наш тест в функциональное тело:
function isNumber (s) {
return typeof s == 'number'? true
: typeof s == 'string'? (s.trim() === ''? false : !isNaN(s))
: (typeof s).match(/object|function/)? false
: !isNaN(s)
}
Эта функция не предназначена для проверки переменной type , вместо этого она проверяет принудительное значение . Например, логические значения и строки приводятся к числам, поэтому, возможно, вы захотите вызвать эту функцию как isNumberCoerced()
если нет необходимости проверять типы , отличные от string и number , то следующий фрагмент может использоваться как часть некоторого условия:
if (!isNaN(s) && s.toString().trim()!='') // 's' can be boolean, number or string
alert("s is a number")