Hack Frontend Community

Что такое функция высшего порядка в 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, особенно при обработке данных, написании универсального кода и работе с колбэками и замыканиями.