Entendendo sobre funções puras

Entenda o que são funções puras em JavaScript, como elas funcionam e por que tornam seu código mais previsível e fácil de testar.

Funções puras são um conceito muito importante na programação funcional. Elas ajudam a deixar o código mais previsível, fácil de testar e com menos bugs.

Mas afinal… o que é uma função pura?
Vamos descobrir passo a passo =)


O que é uma função pura?

Uma função pura é uma função que faz sempre a mesma coisa e não interfere em nada fora dela.
Ela é como uma caixinha fechada: você coloca algo dentro (os argumentos) e recebe algo de volta (o retorno), sem que nada fora da caixa seja alterado.

Para isso, ela precisa seguir três regras simples:

  1. Mesma entrada, mesma saída
    Se você passar os mesmos valores, ela sempre vai retornar o mesmo resultado.
  2. Nada de efeitos colaterais
    Ela não muda variáveis externas, não altera o DOM, não escreve em arquivos, não faz chamadas de rede.Tudo o que acontece nela, fica nela.
  3. Sem depender do mundo lá fora
    A função deve funcionar sozinha, sem depender de valores fora do seu escopo.

Exemplo de função impura

Aqui temos uma função impura.

Ela usa uma variável externa (counter) que muda a cada execução. Isso faz com que o resultado dependa do estado global, e não apenas do que foi passado como argumento.

let counter = 0;

let increment = function() {
  counter = counter + 1;
  return counter;
};

Problema: o valor de retorno depende do que aconteceu antes, ou seja, se chamarmos várias vezes, o resultado muda, mesmo sem alterar os argumentos.


Exemplo de função pura

Agora sim, uma função pura.

Ela depende apenas do valor recebido e não altera nada fora dela.

let increment = function(counter) {
  return counter + 1;
};
  • Se você passar increment(0), o resultado será sempre 1.
  • Se passar increment(5), sempre 6.
  • Simples e previsível.

Por que usar funções puras?

Funções puras trazem muitos benefícios:

  • São previsíveis: sempre fazem o mesmo, sem surpresas.
  • 🧪 Fáceis de testar: basta comparar entradas e saídas.
  • 🧠 Mais legíveis: deixam claro o que está acontecendo.
  • 🧩 Menos bugs: não dependem de estados escondidos ou mutáveis.

Elas são a base da programação funcional, um estilo que valoriza clareza e consistência.
Quanto mais puras forem suas funções, mais fácil será entender e manter seu código.


Funções puras são como bons amigos no código: você sabe exatamente o que esperar delas, toda vez que precisar.