Closure é um conceito que tem relação com a técnica de currying e três cadeias de escopo: seu próprio escopo; escopo externo, com acesso às variáveis da função exterior; e escopo com acesso às variáveis globais. Assinale a alternativa correta acerca do que são closures.
Questão
Closure é um conceito que tem relação com a técnica de currying e três cadeias de escopo: seu próprio escopo; escopo externo, com acesso às variáveis da função exterior; e escopo com acesso às variáveis globais. Assinale a alternativa correta acerca do que são closures.
Alternativas
a) São uma função que tem acesso às variáveis do escopo-pai.
b) São uma variável que possibilita retornar variáveis globais.
c) São um recurso exclusivo de linguagens funcionais.
d) São um recurso que necessita de suporte a currying para funcionar.
e) São uma técnica de aplicação de função parcial.
Explicação
Uma closure ocorre quando uma função é criada dentro de outra (ou em um contexto onde existem variáveis “de fora”) e mantém acesso a essas variáveis do escopo externo, mesmo depois que a função externa já terminou sua execução.
- Isso corresponde exatamente à ideia de “cadeias de escopo”: a função enxerga (1) seu próprio escopo, (2) o escopo externo onde foi definida (escopo-pai), e (3) o escopo global.
- Currying e aplicação parcial são técnicas relacionadas a funções, mas não definem closure e nem são pré-requisitos para que closures existam.
- Closures não são exclusivas de linguagens funcionais (existem, por exemplo, em JavaScript, Python, etc.).
Portanto, a alternativa correta é a que define closure como uma função com acesso às variáveis do escopo-pai.
Alternativa correta: (a).