Acesse nossa Plataforma

Antes de dar uma definição formal, vamos entender onde elas podem ser úteis e por que usá-las.

Em um certo sistema, diversas operações de divisão de arrays são necessárias.

Essa é uma das maneiras de implementar essas operações:

O que são de funções de ordem superior em Javascript

Obviamente essa solução é péssima, praticamente todo o código é repetido, bugs conseguem se esconder facilmente e se caso a lógica mude, alguém vai precisar encontrar todas as funções e alterar uma por uma. Existem várias soluções melhores pra esse problema e uma delas é utilizar funções de ordem superior, que é o que vamos fazer a seguir.

O que são funções de ordem superior?

Uma função de ordem superior, ou higher order function (HOF), como vamos chama-la, é uma função que recebe como argumento, ou retorna uma função. Isso é possível porque em Javascript, funções são entidades de primeira classe, ou seja, é possível passar elas como argumentos para uma outra função.

Mas por que HOFs são importantes? Elas são ótimas ferramentas para evitar repetição desnecessária e seguir princípios como o DRY e KISS.

Como usar em Javascript

Vamos continuar o exemplo anterior, refatorando aquelas funções para uma HOF.

Aqui, toda a parte de copiar o array e iterar sobre ele é separada da lógica, que vai ser passada como argumento quando essa função for chamada.

Como usar funções de ordem superior em Javascript 1

Agora conseguimos utilizar essa função para fazer o mesmo que antes, mas evitando repetição de código.

Como usar funções de ordem superior em Javascript 2

Simplificando ainda mais a implementação, podemos refatorar ela novamente:

Como usar funções de ordem superior em Javascript 3

Espero que agora tenha ficado muito mais claro onde usar essas funções.

HOFs na biblioteca padrão do Javascript

A função copyArrayAndManipulate é muito parecida com uma padrão da linguagem, a Array.forEach e isso não é coincidência, HOFs são utilizadas múltiplas vezes nas funções padrões do JS.

Podemos implementar uma versão mais simples do Array.forEach com os conceitos que aprendemos nesse artigo, que funciona de uma forma muito similar a original.

HOFs na biblioteca padrão do Javascript

Conclusão

Funções de ordem superior em Javascript são uma ferramenta extremamente útil para o dia a dia, elas são utilizadas em diversos lugares nas funções embutidas no JS e em outras bibliotecas, porém, o conceito pode ser um pouco difícil de se entender. Aproveite e conheça um pouco mais sobre desenvolvimento em ambiente Node.JS com Docker.

Agende uma conversa e saiba como podemos te ajudar