Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: input validation, NaN, isNaN, Number.isFinite, type coercion

Какие способы защиты от некорректных входных данных в числовых вычислениях существуют в JavaScript?

Вопрос проверяет знание методов валидации и обработки числовых данных в JavaScript для предотвращения ошибок вычислений.

Короткий ответ

Для защиты от некорректных входных данных используйте проверку типа с typeof, функцию Number.isFinite() для чисел с плавающей точкой, и Number.isNaN() для NaN. Избегайте неявного приведения типов, проверяйте аргументы перед вычислениями. При работе с пользовательским вводом применяйте parseInt() или parseFloat() с явной проверкой результата.

Длинный ответ

Защита от некорректных числовых данных в JavaScript

JavaScript — язык с динамической типизацией, что часто приводит к неожиданным результатам при числовых операциях. Например, '5' - 3 даст 2, а '5' + 3 — '53'. Чтобы избежать ошибок, необходимо явно проверять и преобразовывать входные данные.

Основные методы проверки

  • typeof — базовая проверка типа, но не отличает NaN от числа.
  • Number.isFinite() — возвращает true только для конечных чисел (не Infinity, не NaN).
  • Number.isNaN() — надёжная проверка на NaN, в отличие от глобальной isNaN(), которая приводит аргумент к числу.
  • parseInt() / parseFloat() — преобразуют строку в число, игнорируя нечисловые символы в конце.

Пример кода

function safeAdd(a, b) {
  if (typeof a !== 'number' || typeof b !== 'number') {
    throw new Error('Arguments must be numbers');
  }
  if (!Number.isFinite(a) || !Number.isFinite(b)) {
    throw new Error('Arguments must be finite numbers');
  }
  return a + b;
}

// Пример с пользовательским вводом
function parseAndAdd(input1, input2) {
  const num1 = parseFloat(input1);
  const num2 = parseFloat(input2);
  if (Number.isNaN(num1) || Number.isNaN(num2)) {
    return 'Invalid input';
  }
  return num1 + num2;
}

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

При работе с формами всегда преобразуйте строки в числа с помощью parseFloat() или Number(), затем проверяйте результат через Number.isFinite(). Для целых чисел используйте parseInt() с указанием системы счисления (обычно 10). Избегайте неявного сравнения с NaN, так как NaN !== NaN.

Вывод: Используйте комбинацию typeof, Number.isFinite() и Number.isNaN() для надёжной валидации числовых данных. Это предотвращает ошибки в вычислениях и делает код предсказуемым, особенно при обработке пользовательского ввода или данных из внешних источников.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#input validation

#NaN

#isNaN

#Number.isFinite

#type coercion

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию