Каково назначение функции isFinite?nodejs-80

Функция isFinite() используется для проверки, является ли переданное значение конечным числом. Это важный инструмент валидации числовых значений в JavaScript/Node.js.

Основное поведение

isFinite(123);      // true
isFinite(-1.23);    // true
isFinite(0);        // true
isFinite('123');    // true (строка преобразуется в число)
isFinite('');       // true (пустая строка преобразуется в 0)
isFinite(null);     // true (null преобразуется в 0)
isFinite(Infinity); // false
isFinite(-Infinity);// false
isFinite(NaN);      // false
isFinite('text');   // false
isFinite(undefined);// false

Ключевые особенности:

  1. Преобразование типов:

    • Функция пытается преобразовать переданное значение в число перед проверкой
    • Это отличает ее от Number.isFinite() (появился в ES6)
  2. Что считается "не конечным":

    • Infinity и -Infinity
    • NaN
    • Значения, которые не могут быть преобразованы в конечное число

Разница между isFinite и Number.isFinite

// Пример различий:
isFinite('123');       // true (происходит преобразование)
Number.isFinite('123'); // false (строка ≠ число)

isFinite(null);        // true (null → 0)
Number.isFinite(null); // false

Практическое применение

  1. Валидация пользовательского ввода:
function validateInput(value) {
  return isFinite(value) && value !== null;
}
  1. Проверка результатов вычислений:
const result = someComplexCalculation();
if (!isFinite(result)) {
  throw new Error('Calculation returned infinite value');
}
  1. Обработка данных перед математическими операциями:
const values = [1, '2', 'three', 4];
const validNumbers = values.filter(val => isFinite(val));
// [1, '2', 4] - 'three' отфильтровано

Особенности в Node.js

  1. Работа с большими числами:

    • Помогает выявлять переполнения
    • Полезно при работе с файлами/памятью
  2. Обработка внешних данных:

// При чтении JSON или API ответов
const payload = JSON.parse(rawData);
if (!isFinite(payload.timestamp)) {
  // обработка ошибки
}

Резюмируем:

isFinite() — это функция для проверки конечности числовых значений с неявным преобразованием типов. Для более строгой проверки (без преобразования) следует использовать Number.isFinite(). Обе функции важны для надежной работы с числами в JavaScript/Node.js приложениях.