Функции высшего порядка (Higher-Order Functions) - это функции, которые могут принимать другие функции в качестве аргументов и/или возвращать функции как результат своей работы. Они позволяют создавать абстракции и обобщения, что упрощает и ускоряет разработку программного кода.

Примеры функций высшего порядка:

  1. Array.prototype.map() - это метод массива, который принимает функцию в качестве аргумента и возвращает новый массив, полученный путем применения этой функции к каждому элементу исходного массива. Например:
const numbers = [1, 2, 3, 4, 5]
 
const doubleNumbers = numbers.map(function (num) {
  return num * 2
})
 
console.log(doubleNumbers) // [2, 4, 6, 8, 10]

В этом примере функция, переданная в map(), является функцией высшего порядка, потому что она принимает другую функцию в качестве аргумента.

  1. setTimeout() - это функция, которая принимает функцию в качестве первого аргумента и задержку времени в миллисекундах в качестве второго аргумента. Она запускает переданную функцию через указанное количество времени. Например:
function greet(name) {
  console.log(`Hello, ${name}!`)
}
 
setTimeout(greet, 5000, "John")

В этом примере функция greet() передается в качестве аргумента в setTimeout(), что делает ее функцией высшего порядка.

  1. Array.prototype.reduce() - это метод массива, который принимает функцию в качестве аргумента и возвращает одно значение, полученное путем последовательного применения этой функции к каждому элементу массива. Например:
const numbers = [1, 2, 3, 4, 5]
 
const sum = numbers.reduce(function (total, num) {
  return total + num
}, 0)
 
console.log(sum) // 15

В этом примере функция, переданная в reduce(), является функцией высшего порядка, потому что она принимает другую функцию в качестве аргумента.

Функции высшего порядка могут быть полезны во многих сценариях, таких как функциональное программирование, обработка событий и асинхронное программирование. Они обеспечивают высокую степень абстракции и гибкости в коде.


Назад