Number.isFinite() проверяет, является ли значение конечным числом.
Метод возвращает true только для настоящих чисел, которые не равны NaN, Infinity или -Infinity.
Синтаксис
Number.isFinite(value)
value - значение, которое нужно проверить.
Что делает Number.isFinite()
Метод отвечает на простой вопрос: это обычное конечное число или нет.
console.log(Number.isFinite(123)); // true
console.log(Number.isFinite(3.14)); // true
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(NaN)); // false
Это удобная проверка, когда нужно убедиться, что значение подходит для вычислений.
Что возвращает Number.isFinite()
Number.isFinite() всегда возвращает булево значение:
true, если это конечное числоfalse, если этоNaN,Infinity,-Infinityили не число
console.log(Number.isFinite(0)); // true
console.log(Number.isFinite(-42)); // true
console.log(Number.isFinite(-Infinity)); // false
Без неявного приведения типов
Это главный плюс метода.
Number.isFinite() ничего не преобразует автоматически. Если передать строку, null или другой тип, результат будет false.
console.log(Number.isFinite("123")); // false
console.log(Number.isFinite(null)); // false
console.log(Number.isFinite(true)); // false
Такое поведение делает метод более предсказуемым.
Number.isFinite() и глобальный isFinite()
Эти проверки похожи по названию, но работают по-разному.
console.log(isFinite("123")); // true
console.log(Number.isFinite("123")); // false
Почему так происходит:
isFinite()сначала пытается привести значение к числуNumber.isFinite()ничего не приводит и проверяет только готовое число
Ещё пример:
console.log(isFinite(null)); // true
console.log(Number.isFinite(null)); // false
Поэтому в обычном коде чаще удобнее именно Number.isFinite().
Проверка после Number()
Часто метод используют после явного преобразования в число.
const value = Number(input);
if (Number.isFinite(value)) {
console.log("Можно использовать в расчётах");
}
Это хороший и понятный шаблон: сначала получить число, потом отдельно проверить, удалось ли преобразование.
Number.isFinite() и parseFloat()
После parseFloat() метод тоже полезен.
const value = parseFloat("12.5");
console.log(Number.isFinite(value)); // true
Если чтение не удалось, parseFloat() вернёт NaN, и проверка даст false.
const value = parseFloat("hello");
console.log(Number.isFinite(value)); // false
Infinity и -Infinity
Infinity и -Infinity относятся к типу number, но конечными числами не считаются.
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // false
Это важный момент: метод проверяет не просто тип number, а именно конечное значение.
Number.isFinite() и typeof
Проверка через typeof не решает ту же задачу.
console.log(typeof Infinity); // "number"
console.log(typeof NaN); // "number"
Хотя оба значения имеют тип number, Number.isFinite() для них вернёт false.
Поэтому typeof value === "number" и Number.isFinite(value) - это не одно и то же.
Когда это полезно
Number.isFinite() удобно использовать, когда:
- нужно проверить результат
Number()илиparseFloat() - важно исключить
NaN,Infinityи-Infinity - нужна точная проверка без автоматического приведения типов
Пример:
const price = Number(userInput);
if (!Number.isFinite(price)) {
console.log("Введите корректное число");
}
Частые ошибки
Проверять сырую строку без преобразования
console.log(Number.isFinite("123")); // false
Если значение приходит строкой, обычно сначала его превращают в число:
const value = Number("123");
console.log(Number.isFinite(value)); // true
Путать Number.isFinite() и isFinite()
console.log(isFinite("10")); // true
console.log(Number.isFinite("10")); // false
Если нужна строгая и предсказуемая проверка, чаще лучше Number.isFinite().
Думать, что достаточно проверки typeof
const value = NaN;
console.log(typeof value === "number"); // true
console.log(Number.isFinite(value)); // false
typeof показывает тип, но не говорит, подходит ли число для обычных вычислений.
Быстрая памятка
Number.isFinite()проверяет, является ли значение конечным числом- метод возвращает
trueилиfalse NaN,Infinityи-Infinityдаютfalse- строки и другие типы тоже дают
false - в отличие от глобального
isFinite(), здесь нет неявного приведения типов
Коротко
Number.isFinite() - это удобный способ проверить, получили ли вы нормальное конечное число в JavaScript. Главное, что стоит запомнить: метод не пытается автоматически преобразовать значение и возвращает true только для настоящих конечных чисел.