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:
- Mesma entrada, mesma saída
Se você passar os mesmos valores, ela sempre vai retornar o mesmo resultado. - 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. - 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á sempre1. - Se passar
increment(5), sempre6. - 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.