0 votos
13 visitas
perguntado em Javascript por (3,7K pontos)

O que são os encerramentos (closures) em Javascript? Quando você os usa?

1 Resposta

0 votos
respondida por (5,6K pontos)

Duas formas distintas podem ser usadas para explicar:

  • closures são as variáveis locais de uma função - mantidas vivas mesmo depois que a função foi finalizada, ou
  • closures são um fechamento ou uma pilha de dados que não é desalocada quando a função finaliza.

Um fechamento é um tipo especial de objeto que combina duas coisas: uma função e quaisquer variáveis locais que estavam no escopo no momento em que a closure foi criada.

O código a seguir retorna uma referência a uma função:

function sayHello2(name) {
    var text = ‘Hello ‘ + name; // local variable
    var sayAlert = function() {
        alert(text);
    }
    return sayAlert;
}

A closure é importante quando a função interna será chamada após a saída da função externa. O exemplo mais comum disso é quando a função interna está sendo usada para lidar com um evento.

Neste caso, você não obtém controle sobre os argumentos que são passados para a função, então usar um fechamento para acompanhar o estado pode ser muito conveniente.

...