Fechamentos em JavaScript
Em JavaScript, a função é um bloco de código projetado para executar uma tarefa específica. Ele é executado quando você o invoca.
Por exemplo:
function myFunction(message){
console.log(message)
}
myFunction("Hello there!!")
myFunction("Welcome, boss")
Mas e se quisermos saber o que aconteceu na primeira execução ou na anterior. É aí que vêm os fechamentos.
O que é Closures?
Em palavras simples, quando uma função retorna outra função, que tem acesso ao escopo de suas funções externas, é referido como encerramentos em JavaScript.
Por exemplo:
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
function inner (){
counter++;
return counter;
}
Então, de alguma forma, o JavaScript está lembrando o countervalor anterior e está fazendo uma operação matemática.
Você pode perguntar como Js está fazendo isso?
Quando uma função retorna uma função, não está retornando apenas a função, mas também o escopo léxico dessa função. Todas essas variáveis, dados relacionados a essa função retornada como uma propriedade oculta junto com essa função retornada. Essa propriedade oculta também chamadaBackpack
Esta mochila tem muitos nomes:
- Fechado sobre 'Ambiente Variável' (COVE)
- Dados Referenciados de Escopo Lexical Persistente (PLSRD)
- Mochila
- Fecho
Vejamos outro exemplo:
function outer (){
let counter = 0;
function inner (){
counter++;
return counter;
}
return inner
}
const result = outer()
result() // 1
result() // 2
const anotherResult = outer()
anotherResult() // 1
anotherResult() // 2
Por que fechamentos:
- Isso nos ajuda a criar uma função auxiliar que permite funções poderosas como uma vez e memorizar.
- Nos ajuda a criar Iterators e Generators usando o escopo léxico e encerramentos.
- Muitos padrões de design JavaScript, incluindo o padrão de módulo, usam encerramento, preservando o estado de um aplicativo sem poluir o namespace global.
- Callbacks e Promises dependem de encerramentos para persistir o estado no mundo JavaScript assíncrono.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)