DEV Community

Genesis
Genesis

Posted on

O que são Higher Order Functions?

Higher order functions(funções de ordem superior) são funções que aceitam outra função como paramêtro(callback) ou retornam uma função.

Callback

Funções callback são as funções passadas como paramêtro.

Um método de arrays chamado forEach() aceita callbacks:

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`)
}
Enter fullscreen mode Exit fullscreen mode

Outra higher order funtcion importante é o setInterval()

setInterval(sumArray, 3000)
Enter fullscreen mode Exit fullscreen mode

A cada 3 seg o setInterval ira executar o callback sumArray

Retornando uma função como valor

Exemplo 1:

function higherOrderFunction() {
    console.log("Hello!");
    return function (y){
        console.log("Good bye!");
    }
}
Enter fullscreen mode Exit fullscreen mode

Se chamamos a função normalmente:

higherOrderFunction();
// vai imprimir apenas "Hello!"
Enter fullscreen mode Exit fullscreen mode

Podemos armazenar em uma variavel para guardar o retorno da função

const higherOrder = higherOrderFunction();
console.log(higherOrder());
// Hello!
// Good bye!
Enter fullscreen mode Exit fullscreen mode

Exemplo 2:

function higherOrderFunction(x) {
    return (y) => y + x;
    // retornando uma função arrow que faz a soma com os argumentos
}
Enter fullscreen mode Exit fullscreen mode

Aqui o primeiro paramêtro pertence a higherOrderFunction e o segundo é da função que está sendo retornada:

higherOrderFunction(1)(2);
// 3
Enter fullscreen mode Exit fullscreen mode

ou

const higherOrder = higherOrderFunction(1)(2);
Enter fullscreen mode Exit fullscreen mode




Isso é tudo, até a proxima!

Top comments (0)