Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: JavaScript, division by zero, Infinity, NaN, number type, floating point

Почему в JavaScript допустимо деление на ноль?

Этот вопрос проверяет понимание числовых типов и особенностей арифметических операций в JavaScript, что важно для предотвращения ошибок и корректной обработки граничных случаев.

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

В JavaScript деление на ноль допустимо, потому что язык использует числа с плавающей запятой по стандарту IEEE 754. При делении положительного числа на ноль результатом будет положительная бесконечность (Infinity), а при делении отрицательного числа на ноль — отрицательная бесконечность (-Infinity). Деление нуля на ноль даёт специальное значение NaN (Not a Number), которое указывает на неопределённый результат. Это поведение позволяет вычислениям продолжаться, а не вызывать немедленную ошибку, что даёт разработчику возможность обработать такие случаи явно.

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

В JavaScript все числа представлены в формате 64-битного числа с плавающей запятой двойной точности (стандарт IEEE 754). Этот стандарт определяет специальные значения для представления бесконечностей и "не чисел", что делает арифметические операции более устойчивыми.

Специальные числовые значения

Стандарт IEEE 754 вводит несколько специальных значений:

  • Infinity и -Infinity — представляют положительную и отрицательную бесконечность
  • NaN (Not a Number) — представляет результат неопределённой или некорректной операции

Поведение при делении на ноль

В отличие от некоторых языков, которые генерируют исключение при делении на ноль, JavaScript возвращает одно из специальных значений:

console.log(5 / 0);      // Infinity
console.log(-5 / 0);     // -Infinity
console.log(0 / 0);      // NaN
console.log(-0 / 0);     // NaN

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

Такое поведение позволяет программам продолжать выполнение даже при возникновении математически некорректных операций. Разработчик может явно проверять результаты:

function safeDivide(a, b) {
  const result = a / b;
  
  if (isNaN(result)) {
    return "Результат не определён";
  }
  
  if (!isFinite(result)) {
    return "Результат бесконечен";
  }
  
  return result;
}

console.log(safeDivide(10, 2));   // 5
console.log(safeDivide(10, 0));   // "Результат бесконечен"
console.log(safeDivide(0, 0));    // "Результат не определён"

Особенности сравнения

При работе с этими значениями важно помнить о некоторых особенностях:

  • Infinity === Infinity возвращает true
  • NaN === NaN возвращает false (для проверки используйте isNaN() или Number.isNaN())
  • Infinity > Number.MAX_SAFE_INTEGER возвращает true

Такое поведение особенно полезно в научных вычислениях и алгоритмах, где деление на ноль может возникать как промежуточный результат, но должно обрабатываться на более высоком уровне логики приложения.

Вывод: Допустимость деления на ноль в JavaScript — это осознанный дизайн-выбор, который делает язык более устойчивым к ошибкам в числовых вычислениях. Это полезно в ситуациях, где нужно обрабатывать граничные случаи программно, а не прерывать выполнение исключением, особенно в веб-приложениях, где важна отказоустойчивость.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

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

#JavaScript

#division by zero

#Infinity

#NaN

#number type

#floating point

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