Функции высшего порядка (Higher-Order Functions
) - это функции, которые могут принимать другие функции в качестве аргументов и/или возвращать функции как результат своей работы. Они позволяют создавать абстракции и обобщения, что упрощает и ускоряет разработку программного кода.
Примеры функций высшего порядка:
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()
, является функцией высшего порядка, потому что она принимает другую функцию в качестве аргумента.
setTimeout()
- это функция, которая принимает функцию в качестве первого аргумента и задержку времени в миллисекундах в качестве второго аргумента. Она запускает переданную функцию через указанное количество времени. Например:
function greet(name) {
console.log(`Hello, ${name}!`)
}
setTimeout(greet, 5000, "John")
В этом примере функция greet()
передается в качестве аргумента в setTimeout()
, что делает ее функцией высшего порядка.
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()
, является функцией высшего порядка, потому что она принимает другую функцию в качестве аргумента.
Функции высшего порядка могут быть полезны во многих сценариях, таких как функциональное программирование, обработка событий и асинхронное программирование. Они обеспечивают высокую степень абстракции и гибкости в коде.