A programação funcional é um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e evita a mudança de estado e dados mutáveis. Em JavaScript, isso é facilitado pelo fato de que funções são objetos de primeira classe, o que significa que podem ser passadas como argumentos para outras funções, retornadas como valores de outras funções e atribuídas a variáveis.

A programação funcional em JavaScript geralmente envolve o uso de funções puras, que são funções que dão o mesmo resultado para os mesmos argumentos e não têm efeitos colaterais. Isso significa que elas não modificam nenhum estado ou variável fora da função. Isso torna seu comportamento previsível e fácil de testar.

Por exemplo, considere a seguinte função pura:

function soma(a, b) {
    return a + b;
}

Esta função sempre retornará o mesmo resultado para os mesmos argumentos e não modificará nenhum estado externo.

Outro conceito importante na programação funcional é a imutabilidade, que é a ideia de que uma vez que uma variável é criada, seu valor não pode ser alterado. Em vez disso, qualquer modificação em uma variável resultará em uma nova variável. Isso é útil para evitar efeitos colaterais e tornar o código mais previsível.

let a = 1;
let b = a + 1; // b é agora 2, mas a ainda é 1

As funções de alta ordem são outro pilar da programação funcional. Essas são funções que operam em outras funções, seja tomando-as como argumentos ou retornando-as como resultado. Em JavaScript, as funções de alta ordem são comumente usadas com métodos de array como map, filter e reduce.

let numeros = [1, 2, 3, 4, 5];

let dobrados = numeros.map(function(n) {
    return n * 2;
}); // [2, 4, 6, 8, 10]

let pares = numeros.filter(function(n) {
    return n % 2 === 0;
}); // [2, 4]

let soma = numeros.reduce(function(total, n) {
    return total + n;
}, 0); // 15

O uso de funções de alta ordem como essas pode tornar o código mais conciso e legível.

Finalmente, a composição de funções é outra técnica comum na programação funcional. Isso envolve a criação de funções complexas combinando funções mais simples. Em JavaScript, isso pode ser feito usando a função compose, que pode ser implementada como:

function compose(f, g) {
    return function(x) {
        return f(g(x));
    };
}

Com esta função, você pode criar novas funções combinando outras funções. Por exemplo, você poderia criar uma função para dobrar e depois adicionar 1 a um número:

let dobraEAdiciona1 = compose(function(n) { return n + 1; }, function(n) { return n * 2; });

dobraEAdiciona1(4); // 9

Em resumo, a programação funcional é um paradigma poderoso que pode tornar o código mais previsível, fácil de testar e fácil de entender. Embora possa ser um pouco diferente do que você está acostumado se vier de um fundo imperativo ou orientado a objetos, vale a pena aprender e usar em seu código JavaScript.

Agora responda o exercício sobre o conteúdo:

Qual dos seguintes conceitos NÃO é um pilar da programação funcional em JavaScript?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Programação reativa com RxJS 108

Próxima página do Ebook Gratuito:

Programação reativa com RxJS

Tempo estimado de leitura: 4 minutos

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto