[sign in]

What's a Closure?

  1. O que é Closure?
  2. Variáveis e valores
  3. Definindo funções
  4. Efeitos paralelos
  5. Funções são valores
  6. Retornando funções
  7. Escopo da função
  8. Funções aninhadas
  9. Cada Closures com seu estado
  10. Dados Privados
  11. Callbacks assíncronos
  12. Passando uma continuação

Funções aninhadas

Dentro de uma função você pode definir e usar outras funções. Aqui temos um exemplo que mostra uma função ajudante que simplifica um cálculo complicado.

Na definição de uma função você pode se referir aos argumentos da função mãe. Você também pode se referir a variáveis fora da função na função anexa. Aqui temos o mesmo exemplo, mas com uma constante 1 fabricada fora, como uma variável.

Este foi nosso primeiro exemplo de closure! a função mãe fecha-se sobre a função filha, que por sua vez pode usar as variáveis da função mãe

Uma coisa importante é quando uma função interna (filha) refere-se a argumentos da função de fora (mãe). Argumentos são como variáveis, você pode referenciá-los, você pode consultá-los de dentro da função interna da mesma forma.

Aqui temos o exemplo de uma função create que recebe um arqgumento x e retorna uma função. A função retornada não recebe argumentos e retorna x.

No exemplo acima, mesmo depois da função create terminar, a função que ela retornou continua funcionando. Esta é a mágica dos closures, a referência ao x no escopo externo ainda é válida mesmo depois da função externa ter terminado.

In the example above, even after the create function finishes the function it returns keeps working. That's the magic of closures, the reference to x in the outer scope is still valid even after the outer function finishes. Profundo, não!?

Então, o que é um closure? Closure é uma função que tem o seu próprio ambiente. Em JavaScript quando você passa um valor de função, você está passando por closures!

Defina uma função chamada genesis que recebe dois argumentos x e y. Ela deve retornar uma função que sempre retorne x + y.

1:1

about news main