Promoção no ar
Tempo restante da oferta:
07 Horas
09 Min
49 Seg
Assinar →

O que é Closure

Neste artigo, veremos o que é Closure e por que é tão importante entendê-lo para saber o que acontece por debaixo dos panos na linguagem.

Ariel Sardinha 4 anos atrás

Closure é um conceito da programação que se refere à habilidade de uma função se lembrar e acessar variáveis em um escopo externo, mesmo que após a execução dessa função ter sido finalizada.

No artigo sobre Contexto de execução JavaScript e Contexto e Escopo no JavaScript, explicamos alguns conceitos importantes que facilitarão tudo o que será abordado. Por exemplo, após a execução de uma função, seu contexto de execução é apagado da memória e, com isso, nenhuma variável ou parâmetro continuará existindo na memória.

O que é Closure

É uma função que está dentro de outra função com acesso às variáveis e parâmetros da função que a contém.

Vamos pegar o seguinte exemplo:

function createCounter() {
    let counter = 0;

    const myFunction = function () {
        counter = counter + 1;
        return counter;
    }
    return myFunction;
}

const increment = createCounter();
increment(); // 1
increment(); // 2
increment(); // 3

Se analisarmos o código após finalizar a execução da função createCounter, veremos que o counter não existe mais no contexto de execução, pois o garbage collection já removeu da memória tudo que tem dentro da função createCounter.

Você pode estar se perguntando: como o myFunction tem acesso ao counter?

Isso ocorre porque, quando uma função é declarada, ela contém uma definição de função e um Closure.

A melhor analogia que podemos ter de um Closure é que um Closure é como se fosse uma mochila.

Vamos entender agora, o que a função increment faz para conseguir achar o counter.

  • Primeiro, ela vai executar e buscar pela variável counter dentro do escopo de myFunction. Ele não irá encontrar, porque counter não foi definido lá;
  • Depois, ele vai procurar no contexto global e não vai achar, porque não foi definido lá;
  • Por último, ele vai procurar dentro do Closure dele e ele vai encontrar.

Conclusão

É fundamental para compreender o que é Closure para entender o funcionamento interno das linguagens de programação, especialmente em JavaScript.

Ao entender como as funções podem acessar variáveis e parâmetros de escopos externos, mesmo após sua execução, os desenvolvedores podem escrever códigos mais eficientes e evitar erros

Esperamos que este artigo tenha ajudado a esclarecer esse conceito importante e tenho certeza de que o curso de JavaScript - Orientação a objetos irá ajudá-lo a se tornar um desenvolvedor muito melhor. São 02h49 de video com muito conteúdo e um total de 16 exercícios.

Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 07h 09min 49s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora