[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

Cada Closures com seu estado

Uma coisa muito útil de um closure é que ele mantém seu estado interno. Lembre-se que um closure é criado quando uma função filho se refere a uma variável de uma função mãe. Até agora nós só lemos os valores, mas nós podemos escrever valores também.

Aqui está um exemplo de uma função que cria um contador.

Aonde está o estado mantido? Está na variável count no escopo externo. Por que tem duas cópias? Cada chamada à makeCounter cria um novo escopo para count, e o closure ao redor da função filho f captura este escopo.

Defina uma função chamada makeAccumulator que não recebe argumentos. Ela deve criar e retornar uma função que recebe um argumento e retorna a soma total dos argumentos passados. Por exemplo, se f é a função retornada por makeAccumulator, a primeira vez que você chamar f(3) ela deve retornar 3, depois, se você chamar f(2) ela deve retornar 5.

1:1

about news main