Как на JavaScript проверить, что переменная является числом?

JavaScript, Вопросы и ответы
22 февраля 2012

Вопрос

Ищу простое, надёжное, и эффективное решение проверить, что переменная имеет значение десятичного числа. В качестве разделителя должна использоваться точка. Функция также должна работать, если целая часть не задана (тогда она считается равной нулю). Особо буду признателен, если метод будет кроссбраузерным. Для наглядности, примеры ожидаемых результатов работы функции:

IsNumeric('-1') // true
IsNumeric('-1.6') // true
IsNumeric('0') // true
IsNumeric('0.422') // true
IsNumeric('.422') // true

IsNumeric('99,9999') // false
IsNumeric('0x89f') // false
IsNumeric('#abcdefg') // false
IsNumeric('1.2.3') // false
IsNumeric('') // false
IsNumeric('blah') // false


Ответ №1

Взгляните на это решение:

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

Эта короткая функция возвращает значение true, если n имеет вид десятичного числа не зависимо от его типа. Это может быть как объект Number, так и строка, содержащая числовое значение. Кроме всех Ваших вариантов это значение также может иметь экспоненциальный формат, например isNumber('5e8') вернёт true, так что будьте осторожны! Фактически, в эту функцию можно передать всё, что угодно, только учитывайте корреляцию типов (Например, хотя 1==true, но ведь true не является числом).

Нет комментариев

Добавить комментарий


(обязательно)