Чиста функція - це функція, яка при однакових вхідних даних, завжди повертає однаковий результат і не має побічних ефектів. Визначення може плутати тому по розберемо приклади цих характеристик:
Однаковий результат при однакових аргуметах
// Ця функція чиста, так як працює тільки з своїми аргументами
// і викликавши її в будь якому місці нашого додатку,
// результат виконання не зміниться,
// так як функція не залежить від зовнішніх умов
const applyDiscount = (price, discountPercent) => {
return price - (price * discountPercent) / 100
}
// ----------------------------------------------------------------
// В цьому прикладі функція залежить від DISCOUNT_PERCENT
// і якщо його значення зміниться, результат виконання буде інший
// тому така функція не може вважатись чистою
const DISCOUNT_PERCENT = 20;
const applyDiscount = (price) => {
return price - (price * DISCOUNT_PERCENT) / 100
}
Відсутність побічних ефектів (Side Effects)
Функція не має побічних ефектів, якщо вона не змінює зовнішні змінні, обʼєкти, файли, DOM, БД, мережеві ресурси.
// Ця функція НЕ чиста, так як вона взаємодіє з API і залежить від нього.
const fetchUser = async (id) => {
const response = await fetch(`https://api.example.com/users/${id}`);
return response.json();
};
Для того, щоб зробити вашу відповідь більш професіональною ви можете додати, що ця техніка широко використовується в програмуванні як на бекенді так і на фронтенді. Хорошим тоном буде привести 1 - 2 приклади з фреймворка яким ви користуєтесь, наприклад React.js, Nest.js, Angular, etc. Також, варто згадати, що використання цієї концепції спрощує написання Unit i Integration тестів.