[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

Escopo da função

Muitas linguagens têm escopo de bloco, o que significa que variáveis declaradas no começo de um bloco como um if ou um for são válidas apenas dentro de seus blocaos. JavaScript é um pouco diferente, todas as variáveis têm escopo de função.

Isso significa que todas as variáveis declaradas dentro de uma função estarão disponíveis em qualquer parte dentro dela. Aqui temos um exemplo que mostra como isso pode ser surpriendente.

A vaca foi transformada em cola quando você chamou f(2)? Não, nossa vaca está a salvo no código acima porque a declaração var vaca dentro do bloco do if vale apenas dentro da função. Isso significa que vaca é uma variável local válida para todo o escopo da função.

Para satisfazer suas mórbidas curiosidades bovinas, aqui está a versão que transforma a pobre vaca em cola.

Devido a este comportamento surpriendente, quando você escrever funções deve declarar todas as variáveis logo no começo, assim evitará confuções. Aqui segue um exemplo que declara algumas variáveis do modo correto.

Defina uma função chamada callFunc que recebe um argumento, uma função f. Ela deve retornar um array contendo os valores f(0), f(0), f(1) e f(1). Você só pode chamar f duas vezes.

1:1

about news main