Closures em Javascript
Closure é uma recurso presente nas linguagens do paradigma funcional. Uma linguagem que tem uma base muito forte nesse paradigma (e é a linguagem mais utiliza atualmente), é a Javascript.
Para explicar de uma forma bem rápida e prática o que é closure, veja a (minha) definição:
Closure é permitir que o escopo de uma função mais interna, acesse o escopo de uma função mais externa.
Para entender, veja o exemplo mais clássico de closures:
function somador(numero) {
// escopo mais externo.
return function(paraSomar){
// escopo mais interno.
return numero + paraSomar;
};
}
var soma5 = somador(5);
console.log(soma5(3));
// output
// > 8
Por causa do closure podemos acessar a variável numero
, que pertence a função somador (a função mais externa), dentro da função mais interna.