Какими свойствами должна обладать чистая функция

«Какими свойствами должна обладать чистая функция» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Чистая функция должна обладать двумя ключевыми свойствами:

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

  2. Отсутствие побочных эффектов — не изменяет внешнее состояние (не мутирует входные параметры, не вызывает API, не изменяет DOM и т.д.).

Пример чистой функции:

function sum(a, b) {
  return a + b;
}

Пример НЕ чистой функции:

let counter = 0;
function increment() {
  counter++; // Мутация внешней переменной
  return counter;
}