Learn JavaScript

Number.isFinite() - метод для проверки конечного числа в JavaScript

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 только для настоящих конечных чисел.