Что такое чистая функция?
Функции
Чистая функция (pure function) — это функция, которая при одинаковых аргументах всегда возвращает одинаковый результат и не имеет побочных эффектов.
Два условия чистоты
- Детерминированность — результат зависит только от входных аргументов.
- Отсутствие побочных эффектов — не меняет внешнее состояние (глобальные переменные, входные объекты, 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).