Как проверить, является ли значение числом (конечным)?
Чтобы проверить, является ли значение числом (конечным), в JavaScript можно использовать несколько методов. Давайте рассмотрим их по порядку, а также обсудим, какие ошибки могут возникнуть и какие практические советы можно дать.
1. Использование функции isFinite()
Функция isFinite() проверяет, является ли переданное значение конечным числом. Она работает следующим образом:
- Если переданное значение является числом и не равно
Infinity,-InfinityилиNaN(Not a Number), то функция возвращаетtrue. - В противном случае -
false.
Пример:
console.log(isFinite(42)); // true
console.log(isFinite(-42.5)); // true
console.log(isFinite(NaN)); // false
console.log(isFinite(Infinity)); // false
console.log(isFinite('42')); // false (строковое значение)
Совет: Помните, что isFinite() преобразует переданное значение в число перед проверкой, поэтому строки, содержащие числа, не будут считаться конечными.
2. Использование функции Number.isFinite()
Метод Number.isFinite() является более строгим вариантом. Он проверяет, является ли переданное значение конечным числом, но не выполняет преобразование типов.
Пример:
console.log(Number.isFinite(42)); // true
console.log(Number.isFinite('42')); // false (строка не преобразуется)
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite(Infinity)); // false
Преимущество: Этот метод не преобразует строки в числа, что делает его более надежным для работы с данными, которые могут не быть числовыми.
3. Использование typeof и проверки на NaN
Еще один способ проверки - это использование оператора typeof и функции isNaN():
- Сначала проверяем, является ли значение типом
number. - Затем проверяем, не равно ли оно
NaN.
Пример:
function isNumber(value) {
return typeof value === 'number' && !isNaN(value);
}
console.log(isNumber(42)); // true
console.log(isNumber(NaN)); // false
console.log(isNumber('42')); // false
4. Практические советы
-
Не используйте
==для проверки на число. Это может привести к неожиданным результатам из-за неявного преобразования типов. -
Помните о
NaN. Это специальное значение, которое обозначает "не число" и не равно самому себе. Для проверки используйтеisNaN()илиNumber.isNaN(). -
Работайте с типами данных. В JavaScript тип данных имеет значение. Если вы ожидаете число, убедитесь, что переданное значение действительно является числом.
5. Распространенные ошибки
-
Неправильное использование
isNaN(). Эта функция не всегда возвращает ожидаемый результат, поскольку она также принимает строки и преобразует их в числа. Поэтому лучше использоватьNumber.isNaN()для более строгой проверки. -
Не учитывание
Infinity. Часто начинающие разработчики не проверяют наInfinityи-Infinity, что может привести к ошибкам в логике программы.
В заключение, для проверки, является ли значение конечным числом в JavaScript, рекомендуется использовать метод Number.isFinite(), так как он обеспечивает наилучшие результаты без преобразования типов.