Назад к вопросам
Junior
133
questionbank

Что такое функция первого рода?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Функция первого рода (Higher-Order Function) в Node.js, как и в других языках с поддержкой функционального программирования, — это функция, которая:

  • Принимает одну или несколько функций в качестве аргументов.
  • Возвращает другую функцию в качестве результата.

Это позволяет создавать абстракции, комбинировать функции и управлять потоком выполнения более гибко.

Примеры использования:

  • Callback функции: Передача функции, которая будет вызвана после завершения асинхронной операции.
  • Функции для работы с массивами: map, filter, reduce принимают функцию, которая применяется к каждому элементу массива.
  • Декораторы или wrapper функции: Функции, добавляющие дополнительную логику к другой функции.
// Пример функции высшего порядка, которая принимает другую функцию как аргумент
function createMultiplier(multiplier) {
  return function(number) { // Возвращает новую функцию
    return number * multiplier;
  };
}

const double = createMultiplier(2);
const triple = createMultiplier(3);

console.log(double(5)); // 10
console.log(triple(5)); // 15

// Пример использования callback в асинхронной операции (упрощенно)
function fetchData(url, callback) {
  // Имитация запроса к API
  setTimeout(() => {
    const data = `Данные с ${url}`;
    callback(data); // Вызов переданной callback функции
  }, 1000);
}

fetchData('https://example.com', (data) => {
  console.log('Получено:', data);
});

// Пример использования Array.prototype.map
const numbers = [1, 2, 3];
const doubledNumbers = numbers.map((num) => { // map принимает функцию
  return num * 2;
});
console.log(doubledNumbers); // [2, 4, 6]

Основные преимущества использования функций первого рода:

  • Повышение абстракции: Позволяют скрывать детали реализации и работать на более высоком уровне.
  • Повторное использование кода: Функции могут быть легко переиспользованы в различных контекстах.
  • Улучшение читаемости: Код становится более декларативным и понятным.
  • Поддержка композиции: Позволяют легко комбинировать функции для создания более сложных операций.