High-order Functions

High-order Functions

Tulio Faria
Tulio Faria7 de abril de 2017
A dica de hoje é sobre High-order Functions, que são funções que recebem ou retornam funções. Nós temos alguns tipos diferentes, como por exemplo vetor, map e forEach, elas são high-order functions porque podemos passar um método que ele vai iterar dando o console.log.

const vetor = [1, 2, 3] vetor.forEach((item) => console.log(item))

Perceba que estamos passando uma função para essa outra função que é uma high-order function, a função que passamos para ela chamamos de firt order function. Com ela conseguimos construir nossas próprias funções high-order. Por exemplo, caso queiramos fazer uma função mathOperator, que pega dois termos e retorna os números, e uma função que faz a operação que eu quero:

function mathOrder(num1, num2, op) { return op(num1, num2) } console.log(mathOperator(1, 2, (num1, num2) => num1 + num2))

Então eu quis que essa high-order function chame o num1 e num2 e retorne a soma das duas.
Não necessariamente as high-order functions precisam ser puras, a única regra que temos é que ela recebe ou retorna uma função. No exemplo que fizemos, o op naquele momento é uma função. É importante lembrar que em JavaScript funções podem ser colocadas dentro de variáveis, por isso é possível criar high-order functions, uma coisa que não é tão simples de se fazer em Java por exemplo.
Lembrando que eu utilizei arrow function para facilitar mas eu poderia também fazer a operação:

function mathOrder(num1, num2, op) { return op(num1, num2) } function operadorMult(num1, num2) { return ( num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1num1\ * num2 ) } console.log(mathOperator(1, 2, (num1, num2) => num1 + num2)) console.log(mathOperator(1, 2, operadorMult))

High-order functions é um conceito muito importante para podermos injetar comportamento em uma função, esse é o grande ponto delas. Podemos compor funções que são muito mais simples, e isso é muito importante não só em programação funcional mas principalmente para simplificar as funções.
Confira o video:
yST5SzsFXZI
Assistir vídeo
Curta o DevPleno no Facebook, se inscreva no canal no YouTube e cadastre seu e-mail para não perder as atualizações. Abraço!
Tulio Faria
Autor
Tulio Faria7 de abril de 2017

Últimas do Blog