Skip to main content

Функція вищого порядку

Функція вищого порядку (higher-order function) - це функція, яка приймає іншу функцію як аргумент або повертає функцію як результат.


Детальне пояснення

У JavaScript функції - це об'єкти першого класу (first-class citizens), а отже їх можна:

  • передавати як значення,
  • зберігати у змінних,
  • повертати з інших функцій.

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


Приклади коду

1. Приймає функцію як аргумент

javascript
function repeat(n, action) { for (let i = 0; i < n; i++) { action(i); } } repeat(3, console.log); // 0 // 1 // 2

repeat - функція вищого порядку, тому що вона викликає передану функцію action.


2. Повертає нову функцію

javascript
function multiplier(factor) { return function (num) { return num * factor; }; } const double = multiplier(2); console.log(double(5)); // 10

multiplier - функція вищого порядку, тому що повертає іншу функцію.


3. Вбудовані приклади в JS

Багато методів масивів - функції вищого порядку:

javascript
[1, 2, 3].map(x => x * 2); // приймає функцію [1, 2, 3].filter(x => x > 1); // приймає функцію [1, 2, 3].reduce((a, b) => a + b, 0); // приймає функцію

Навіщо потрібні

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


Підсумок

ВластивістьОпис
Що робитьПриймає або повертає функції
Прикладиmap, filter, reduce, setTimeout, addEventListener
ПеревагиПовторне використання логіки, компактність коду
Ключова ідеяФункції - такі самі дані, як числа чи рядки

В одній фразі:

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

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

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

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