Функции высокого порядка в Javascript

Функции высокого порядка — это функции, которые принимают другую функцию в качестве параметра или возвращают другую функцию.
В javascript функции могут рассматриваться как переменные, что позволяет возвращать их или передавать в качестве параметров.

Реализация функции высокого порядка

Давайте реализуем простую функцию высокого порядка, которая принимает другую функцию и вызывает ее внутри своего тела

function doSomething(action) {
    action(); // Hi
}

function actionFunction() {
    console.log("Hi");
}

doSomething(actionFunction);
Вход в полноэкранный режим Выйти из полноэкранного режима

Мы вызвали функцию doSomething и передали ей в качестве параметра функцию actionFunction, а она просто вызвала ее внутри своего тела, и это совершенно нормально для javascript.

Давайте создадим еще одну функцию высокого порядка, но теперь вместо этого мы будем возвращать из нее функцию

function getAction() {
  return function() {
    console.log("Hi");
  }
}

const action = getAction();

action(); // hi
Вход в полноэкранный режим Выйти из полноэкранного режима

Мы сохранили функцию, возвращенную getAction, а затем вызвали ее, чтобы записать привет в консоль.

Существующие функции высокого порядка в Javascript

В язык javascript встроено множество функций высокого порядка, сейчас мы рассмотрим некоторые из них, которые являются методами массивов

метод forEach

let arr = [1, 2, 3, 4, 5];

function log(x) {
  console.log(x); // 1, 2, 3, 4, 5
}

arr.forEach(log);
Вход в полноэкранный режим Выход из полноэкранного режима

функция forEach циклически проходит по массиву и каждый раз вызывает переданную функцию, передавая ей элемент, по которому идет итерация

функция map

let arr = [1, 2, 3, 4, 5];

function double(x) {
  return x * 2;
}

const newArr = arr.map(double);

console.log(newArr); // [ 2, 4, 6, 8, 10 ]
Войти в полноэкранный режим Выход из полноэкранного режима

метод map заменяет значение, по которому идет итерация, на значение, которое возвращает переданная функция, а затем возвращает новый массив

метод фильтра

let arr = [1, 2, 3, 4, 5];

function isPair(x) {
  return x % 2 == 0;
}

const pairs = arr.filter(isPair);

console.log(pairs); // [ 2, 4 ]
Войти в полноэкранный режим Выйти из полноэкранного режима

метод filter сохраняет только те элементы массива, которые переданы в функцию, и возвращает true

Оцените статью
Procodings.ru
Добавить комментарий