Чисті функції

Функції бувають чисті і з побічними ефектами в задежності від того як вони взаємодіють з вихідними даними.

Функція з побічними ефектами в процесі виконання може змінювати або використовувати глобальні змінні, змінювати значення аргументів посилального типу, виконувати операції введення-виведення тощо.

let array = [1, 2, 3, 4, 5];
console.log(array); // [1, 2, 3, 4, 5]

const multiplication = (arr, value) => {
  for (let i = 0; i < arr.length; i += 1) {
    arr[i] = arr[i] * value;
  }
};

multiplication(array, 2);
console.log(array); // [2, 4, 6, 8, 10]

Як бачимо функція змінила вихідний масив.

Чиста функція (pure function) не має побічних ефектів і не змінює значення аргументів.

Перепишемо функцію так, щоб вона не змінювала вихідний масив, а створювала новий.

const array = [1, 2, 3, 4, 5];
console.log(array); // [1, 2, 3, 4, 5]

const multiplication = (arr, value) => {
  let tempArr = [];
  for (let i = 0; i < arr.length; i += 1) {
    tempArr.push(arr[i] * value);
  }
  return tempArr;
};

const newArray = multiplication(array, 2);
console.log(array); // [1, 2, 3, 4, 5]
console.log(newArray); // [2, 4, 6, 8, 10]

Last updated