Сайд-ефекти
Коротко: Side effect (побічний ефект) - це будь-яка дія функції, яка впливає на зовнішній стан або залежить від нього, окрім значення, що повертається.
Детальне пояснення
Побічний ефект - це будь-яка зміна поза самою функцією: зміна глобальних змінних, вивід у консоль, запит до сервера, зміна DOM, робота з файлами тощо.
Функції з побічними ефектами називають нечистими, тому що вони змінюють світ за межами себе і роблять поведінку програми менш передбачуваною.
Приклади побічних ефектів
| Приклад | Що робить |
|---|---|
console.log('Hello') | Змінює консоль (зовнішнє оточення) |
alert('Hi!') | Взаємодіє з користувачем |
document.body.style.color = 'red' | Змінює DOM |
fetch('/api') | Робить HTTP-запит |
Math.random() | Залежить від зовнішнього стану (генератор випадкових чисел) |
Date.now() | Залежить від поточного часу |
| Зміна глобальної змінної | Змінює стан програми поза функцією |
Приклад "з побічним ефектом"
let count = 0;
function increment() {
count++; // змінює зовнішню змінну
}Тут функція не лише рахує, а й змінює стан програми.
Приклад "без побічних ефектів"
function add(a, b) {
return a + b;
}Ця функція працює лише зі своїми аргументами і нічого навколо не чіпає.
Чому це важливо
Код без побічних ефектів:
- легше тестувати;
- простіше передбачити результат;
- безпечніше для паралельного виконання.
Але! Деякі побічні ефекти неминучі - інакше програма не взаємодіяла б із зовнішнім світом (UI, сервер, файл тощо). Головне - ізолювати й контролювати їх.
ПІДСУМОК
| Ознака | Side effect |
|---|---|
| Змінює зовнішні дані | так |
| Залежить від зовнішнього стану | так |
| Повертає різні результати за однакового вводу | можливо |
| Приклад | console.log, fetch, DOM-операції |
| Без побічних ефектів | Чиста функція |
В одній фразі:
"Side effect" - це будь-який зовнішній вплив функції (зміна або залежність від оточення), не пов'язаний напряму з її результатом, що повертається.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.