Функція вищого порядку
Функція вищого порядку (higher-order function) - це функція, яка приймає іншу функцію як аргумент або повертає функцію як результат.
Детальне пояснення
У JavaScript функції - це об'єкти першого класу (first-class citizens), а отже їх можна:
- передавати як значення,
- зберігати у змінних,
- повертати з інших функцій.
Функції, які використовують інші функції таким чином, називаються вищого порядку.
Приклади коду
1. Приймає функцію як аргумент
function repeat(n, action) {
for (let i = 0; i < n; i++) {
action(i);
}
}
repeat(3, console.log);
// 0
// 1
// 2repeat - функція вищого порядку, тому що вона викликає передану функцію action.
2. Повертає нову функцію
function multiplier(factor) {
return function (num) {
return num * factor;
};
}
const double = multiplier(2);
console.log(double(5)); // 10multiplier - функція вищого порядку, тому що повертає іншу функцію.
3. Вбудовані приклади в JS
Багато методів масивів - функції вищого порядку:
[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 |
| Переваги | Повторне використання логіки, компактність коду |
| Ключова ідея | Функції - такі самі дані, як числа чи рядки |
В одній фразі:
Функція вищого порядку - це функція, яка працює з іншими функціями як з даними, приймаючи їх як аргументи або повертаючи їх як результат.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.