DevPath · Aprenda a programar ESPTEN

Programação funcional

Funções puras e imutabilidade

Funções puras

Uma função pura segue duas regras:

  1. Determinismo: com os mesmos argumentos, sempre retorna o mesmo resultado.
  2. Sem efeitos colaterais: não modifica nada fora dela (variáveis externas, o DOM, o array que recebe...).
// Pura: depende apenas dos seus argumentos
function somar(a, b) {
  return a + b;
}

// Impura: depende de algo externo e o modifica
let total = 0;
function acumular(n) {
  total += n; // efeito colateral
}

As funções puras são fáceis de testar, de raciocinar e de reutilizar, porque não guardam estado oculto nem causam surpresas.

Imutabilidade

Em vez de modificar dados, a programação funcional prefere criar cópias novas com as alterações aplicadas. Assim ninguém é afetado por modificações inesperadas:

const numeros = [1, 2, 3];

// Mutar (evite no estilo funcional):
numeros.push(4);

// Imutável: cria um array novo
const ampliado = [...numeros, 4];

Para objetos usa-se o spread da mesma forma:

const usuario = { nome: "Ana", idade: 30 };
const maisVelho = { ...usuario, idade: 31 }; // cópia com uma alteração

Exemplos

Atualizar um objeto sem mutá-lo

const usuario = { nome: "Ana", idade: 30 };
const atualizado = { ...usuario, idade: 31 };
console.log(usuario.idade);     // 30 (intacto)
console.log(atualizado.idade);  // 31
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
Funções de ordem superior e map/filter/reduce →