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

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

Обратный звонок

Функции обратного вызова — это функции, которые передаются в качестве параметров.

Метод массивов под названием forEach() принимает обратные вызовы:

const numbers = [5, 25, 50]
function sumArray() {
    // declarando variável acumuladora
    let sum = 0
    numbers.forEach(element => {
        // função callback
        // element é cada elemento do array numbers
        sum+=element
        // que vai ser somado e guardado na variável sum
    });
    console.log(`nTotal: ${sum}n`)
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Еще одна важная функция высшего порядка — setInterval().

setInterval(sumArray, 3000)
Войдите в полноэкранный режим Выход из полноэкранного режима

Каждые 3 секунды setInterval будет выполнять обратный вызов sumArray

Возвращение функции в качестве значения

Пример 1:

function higherOrderFunction() {
    console.log("Hello!");
    return function (y){
        console.log("Good bye!");
    }
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Если мы вызовем функцию нормально

higherOrderFunction();
// vai imprimir apenas "Hello!"
Войдите в полноэкранный режим Выход из полноэкранного режима

Мы можем хранить возврат функции в переменной

const higherOrder = higherOrderFunction();
console.log(higherOrder());
// Hello!
// Good bye!
Войдите в полноэкранный режим Выход из полноэкранного режима

Пример 2:

function higherOrderFunction(x) {
    return (y) => y + x;
    // retornando uma função arrow que faz a soma com os argumentos
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Здесь первый параметр принадлежит higherOrderFunction, а второй — возвращаемой функции:

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

или

const higherOrder = higherOrderFunction(1)(2);
Войдите в полноэкранный режим Выход из полноэкранного режима

Вот и все, увидимся в следующий раз!

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