Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Функція вищого порядку». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Функція вищого порядку** - це функція, яка приймає іншу функцію як аргумент або повертає функцію як результат. Це можливо тому, що в JavaScript функції є об'єктами першого класу: їх можна передавати, зберігати у змінних і повертати з інших функцій. **Ключове:** функції вищого порядку - основний інструмент функціонального програмування (наприклад, `map`, `filter`, `reduce`).Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Функція вищого порядку (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` | | Переваги | Повторне використання логіки, компактність коду | | Ключова ідея | Функції - такі самі дані, як числа чи рядки | --- **В одній фразі:** > Функція вищого порядку - це функція, яка **працює з іншими функціями як з даними**, > приймаючи їх як аргументи або повертаючи їх як результат.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.