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