Чистые функции
Чистые функции
Функция с побочными эффектами — функция, которая в процессе выполнения может модифицировать или использовать значения глобальных переменных, изменять ссылочные аргументы, выполнять операции ввода-вывода и т. п.
Используем привычный императивный подход и напишем функцию, умножающую каждый элемент массива на значение параметра value
. Эта функция будет мутировать (изменять) исходный массив по ссылке.
const dirtyMultiply = (array, value) => {
for (let i = 0; i < array.length; i += 1) {
array[i] = array[i] * value;
}
};
const numbers = [1, 2, 3, 4, 5];
dirtyMultiply(numbers, 2);
// Произошла мутация исходных данных
console.log(numbers); // [2, 4, 6, 8, 10]
Copy
Чистые функции (pure functions) — функции, результат которых зависит только от значений переданных аргументов и стабильных переменных локальной области видимости, которые при одинаковых аргументах всегда возвращают один и тот же результат, и не имеют видимых побочных эффектов, то есть не изменяют состояние программы.
Теперь напишем реализацию чистой функции умножения элементов массива, возвращающей новый массив, не мутируя исходный.
const pureMultiply = (array, value) => {
const result = [];
for (let i = 0; i < array.length; i += 1) {
result.push(array[i] * value);
}
return result;
};
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = pureMultiply(numbers, 2);
// Не произошло мутации исходных данных
console.log(numbers); // [1, 2, 3, 4, 5]
// Функция вернула новый массив с измененными данными
console.log(doubledNumbers); // [2, 4, 6, 8, 10]
Last updated