DevPath · Aprenda a programar ESPTEN

Funções

Funções como valores

As funções são valores de primeira classe

Aqui o JavaScript te dá um poder que surpreende quem vem de outras linguagens: as funções são valores como qualquer outro. Você pode guardá-las em variáveis, colocá-las em arrays, passá-las como argumento e retorná-las a partir de outra função, igual ao que você faria com um número ou um texto. Isso se chama "funções de primeira classe".

Passar uma função como argumento

Uma função que recebe outra função se chama função de ordem superior:

function aplicar(valor, operacao) {
  return operacao(valor);
}
const dobro = n => n * 2;
console.log(aplicar(5, dobro)); // 10

Retornar uma função

function multiplicador(fator) {
  return n => n * fator;
}
const porTres = multiplicador(3);
console.log(porTres(10)); // 30

Essa ideia, simples na aparência, é a base dos padrões mais poderosos do JavaScript. Quando uma função "lembra" valores de onde nasceu, você tem um closure: vai desbloqueá-lo no próximo módulo, e é ali que as funções deixam de ser ferramenta para virar um verdadeiro superpoder.

Exemplos

Guardar funções em um objeto e chamá-las

const operacoes = {
  somar: (a, b) => a + b,
  subtrair: (a, b) => a - b,
};
console.log(operacoes.somar(2, 3));    // 5
console.log(operacoes.subtrair(7, 4)); // 3
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 →
← Parâmetros, valores padrão e returnVer o módulo →