PassFront
  1. PassFront
  2. База знаний
  3. Функции

Что такое чистая функция?

Функции

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

Два условия чистоты

  1. Детерминированность — результат зависит только от входных аргументов.
  2. Отсутствие побочных эффектов — не меняет внешнее состояние (глобальные переменные, входные объекты, DOM, сеть, консоль).
// Чистая
function add(a, b) {
  return a + b;
}

// Нечистая — зависит от внешнего и мутирует
let total = 0;
function addToTotal(x) {
  total += x;
  return total;
}

Почему это ценно

  • Предсказуемость — легко рассуждать о коде.
  • Тестируемость — не нужны моки, достаточно вход/выход.
  • Мемоизация — результат можно кешировать.
  • Параллелизм — нет общего состояния, нет гонок.

Частый признак нечистоты

Мутация входного аргумента:

// Нечистая — меняет массив
const push = (arr, x) => { arr.push(x); return arr; };
// Чистая — возвращает новый
const add = (arr, x) => [...arr, x];

Коротко для собеседования

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

Другие вопросы раздела