Чистая функция (pure function) - это функция, которая всегда возвращает одинаковый результат для одних и тех же аргументов, и не имеет побочных эффектов.
То есть, чистая функция не изменяет состояние программы, не взаимодействует с внешними ресурсами (например, файловой системой, базой данных или сетью), не изменяет переданные ей аргументы и не зависит от других состояний программы, кроме своих аргументов.
Пример чистой функции:
function add(a, b) {
return a + b
}
Эта функция принимает два аргумента “a” и “b” и возвращает их сумму. Функция всегда возвращает одинаковый результат для одних и тех же аргументов и не имеет побочных эффектов, поэтому она является чистой.
Пример нечистой функции:
Нечистые функции = непостоянные результаты
let counter = 0
function incrementCounter() {
counter++
}
incrementCounter()
console.log(counter) // Выводит 1
- Нет побочных эффектов
- Видоизменение входных параметров
- console.log
- HTTP вызовы (AJAX/fetch)
- Изменение в файловой системе
- Запросы DOM
Эта функция изменяет глобальную переменную “counter”, что является побочным эффектом. Это изменение может повлиять на другие части программы, которые используют эту переменную, поэтому функция является нечистой.
Чистые функции обычно проще тестировать и отлаживать, поскольку они не зависят от других состояний программы и всегда возвращают одинаковый результат для одних и тех же аргументов. При проектировании программы следует стремиться к тому, чтобы большинство функций были чистыми, а нечистые функции использовались только там, где это необходимо и оправдано.