Skip to main content

Іммутабельність у функціях

Подробний опис

Іммутабельність - один із ключових принципів чистих і передбачуваних функцій. Якщо функція змінює передані дані (масив, об'єкт тощо), вона впливає на зовнішній стан → стає нечистою і складною для відлагодження.


Приклад з мутацією (не іммутабельно)

javascript
function addItem(arr, item) { arr.push(item); // змінює вихідний масив return arr; } const numbers = [1, 2, 3]; const result = addItem(numbers, 4); console.log(numbers); // [1, 2, 3, 4] - вихідні дані змінилися!

Це мутабельний (mutable) підхід - функція змінює свої аргументи.


Іммутабельний варіант

javascript
function addItem(arr, item) { return [...arr, item]; // створює новий масив } const numbers = [1, 2, 3]; const result = addItem(numbers, 4); console.log(numbers); // [1, 2, 3] - вихідні дані збережено console.log(result); // [1, 2, 3, 4]

Функція не змінила вхідні дані, а повернула нову копію - це і є іммутабельність.


Приклади іммутабельних операцій

Тип данихІммутабельний спосіб
Масивmap(), filter(), concat(), spread ([...])
Об'єкт{ ...obj, key: newValue }
РядокЗавжди іммутабельний (у JS рядки не можна змінити)

Приклади мутабельних операцій (яких варто уникати в чистих функціях)

Тип данихОперація
Масивpush(), pop(), splice(), sort(), reverse()
Об'єктПряме присвоєння obj.key = value

Навіщо потрібна іммутабельність

Робить функції чистими і передбачуваними Спрощує відлагодження і тестування Виключає побічні ефекти Дозволяє безпечно розпаралелювати операції Полегшує відкат і порівняння станів (наприклад, у React, Redux)


ПІДСУМОК

ВластивістьІммутабельна функція
Змінює вхідні даніНі
Створює нові структуриТак
Побічні ефектиНемає
ПередбачуваністьВисока
Прикладиmap, filter, reduce

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.