Что такое функция высшего порядка в JavaScript (HOF)
Функция высшего порядка (Higher-Order Function) — это функция, которая принимает другую функцию как аргумент или возвращает функцию в качестве результата.
Просто о сложном:
Если функция может работать с другой функцией (принимать, возвращать или и то, и другое), она — функция высшего порядка.
Примеры функций высшего порядка
Принимает другую функцию как аргумент
function greet(name) {
return `Hello, ${name}`;
}
function processUserInput(callback) {
const name = "Alice";
return callback(name);
}
console.log(processUserInput(greet)); // "Hello, Alice"
Здесь processUserInput
— функция высшего порядка, так как она принимает другую функцию greet
как аргумент.
Возвращает функцию
function multiplier(factor) {
return function (number) {
return number * factor;
};
}
const double = multiplier(2);
console.log(double(5)); // 10
В этом примере multiplier
возвращает другую функцию — значит, это тоже функция высшего порядка.
Где применяются функции высшего порядка?
JavaScript активно использует HOF
в встроенных методах работы с массивами: map
, filter
, reduce
, forEach
.
Пример с map
const numbers = [1, 2, 3];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6]
Метод map
— это функция высшего порядка, потому что он принимает в аргументы другую функцию (num => num * 2)
.
Зачем нужны HOF?
- Повышают гибкость и переиспользуемость кода
- Улучшают абстракцию — можно писать более общее поведение, не зависящее от конкретных действий
- Позволяют реализовывать замыкания, декораторы, частичное применение и другие мощные концепции
Итог
Функции высшего порядка — это функции, которые:
- Принимают другие функции как аргументы
- И/или возвращают функцию как результат
Они являются важным инструментом при работе с функциональным стилем в JavaScript, особенно при обработке данных, написании универсального кода и работе с колбэками и замыканиями.