Функции высшего порядка принимают в качестве аргументов другие функции или возвращают функцию. Примером может быть встроенный метод массива filter(); Метод filter() создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции. Создадим новый массив с четными числами: let numbers = [1,2,3,4,5,6];
function isEven(x){
return x % 2 === 0;
} let evenNumbers = numbers.filter(isEven);
//2 4 6 Методы map() и reduce() тоже функции высшего порядка. Создадим сами функцию высшего порядка. Передаем функцию в качестве параметра (в нашем случае process();). До начала работы функции process(); выведем "начало загрузки", после - "конец загрузки". function doWithLoading(fn){
console.log("начало загрузки");
let returnValue = fn();
console.log("конец загрузки");
return returnValue;
} function process() {
console.log("загружаем...");
} doWithLoading(process);
// начало загрузки
// загружаем...
// конец загрузки Замыкание - это работа функции высшего порядка,