Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: function, testing

Что такое Pure function?

Этот вопрос проверяет понимание фундаментальной концепции функционального программирования — чистоты функций, что критически важно для предсказуемости кода.

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

Чистая функция (Pure function) — это функция, которая при одинаковых входных аргументах всегда возвращает одинаковый результат и не имеет побочных эффектов (не изменяет внешнее состояние или переданные ей аргументы). Ее работа зависит только от своих входных данных, что делает ее поведение предсказуемым и легко тестируемым.

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

Чистые функции — это краеугольный камень функционального программирования и написания надежного кода.

Характеристики чистой функции:

  1. Детерминированность: Для одних и тех же аргументов всегда возвращает один и тот же результат. Не зависит от скрытого состояния или изменяющихся внешних данных (например, глобальных переменных, текущего времени).

  2. Отсутствие побочных эффектов (Side Effects): Не производит наблюдаемых изменений вне функции. Это означает, что она:

    • Не изменяет свои входные аргументы.

    • Не модифицирует глобальные переменные.

    • Не выполняет операций ввода-вывода (например, запросы к сети, чтение файлов).

    • Не вызывает Math.random() или Date.now() (так как их результат непредсказуем).

Примеры:

// ЧИСТАЯ ФУНКЦИЯ
function add(a, b) {
  return a + b;
}
// Всегда: add(2, 3) => 5. Ничего не меняет.

// НЕЧИСТАЯ ФУНКЦИЯ
let counter = 0;
function increment() {
  counter++; // Побочный эффект: изменение внешней переменной
}
// НЕЧИСТАЯ ФУНКЦИЯ
function getRandomNumber() {
  return Math.random(); // Результат разный при каждом вызове.
}
// НЕЧИСТАЯ ФУНКЦИЯ
function saveUser(user) {
  fetch('/api/users', { // Побочный эффект: сетевой запрос (IO)
    method: 'POST',
    body: JSON.stringify(user)
  });
}

Преимущества чистых функций:

  • Предсказуемость: Легко понять, что делает функция.

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

  • Переиспользование: Их можно безопасно использовать в разных частях приложения.

  • Кеширование: Результат можно закешировать (мемоизировать) на основе аргументов, чтобы избежать повторных вычислений.

Вывод

Стремитесь к написанию чистых функций везде, где это возможно, так как они делают код более стабильным и понятным. Нечистые функции (например, для взаимодействия с DOM, сетью или глобальным состоянием) следует изолировать и явно идентифицировать.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#function

#testing

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