Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

O que é uma closure no contexto da aula "Otimizando o build com Scope Hoisting"?

Veja se o conceito é o mesmo deste artigo: https://klauslaube.com.br/2011/05/29/afinal-o-que-sao-closures.html

5 respostas

Oi, Mauricio, tudo bem?

  • O scope é determinar onde variáveis, funções e objetos estão acessíveis no seu código durante o tempo de execução.

  • A hoistingé um mecanismo JavaScript em que variáveis e declarações de funções são movidas para o topo de seu escopo antes da execução do código.

  • O closure fornece acesso ao escopo de uma função externa a partir de uma função interna.

O scope hoisting em Javascript é quando elevamos ao topo as funções e variáveis de forma que elas possam ser lidas antes de serem declaradas em tempo de execução.

Um exemplo para ficar mais claro:

catName("Kitty");

function catName(name) {
  console.log("O nome do meu gato é " + name); // O nome do meu gato é Kitty
}

Veja que nesse exemplo, eu primeiro chamei função catName(name) e só depois declarei a mesma. Mas o scope hoisting permite faz com que a função seja "içada" ao topo do programa, por isso, que não acusa erro você declarar ela depois e chamar a função antes.

Para saber mais: https://developer.mozilla.org/pt-BR/docs/Glossario/Hoisting

Se ficou alguma dúvida é só falar!

Vc acabou não respondendo a minha pergunta, mas acho que pela sua explicação a resposta seria "sim".

Oi, Mauricio, tudo bem?

Desculpe, acredito que me apeguei ao conceito de Scope Hoisting . O closures que o instrutor menciona estão relacionado aos módulos que o webpack usa. O scope Hoisting está relacionado à variáveis e à funções. Aqui, na documentação do webpack, mostra como era nas antigas versões utilizando closures: https://webpack.js.org/plugins/closure-webpack-plugin/#older-versions

Veja se o conceito de closures da aula é o mesmo deste artigo: https://klauslaube.com.br/2011/05/29/afinal-o-que-sao-closures.html

solução!

Oi, Mauricio!

Sim, antes, como comentado pelo instrutor, o webpack utilizava closures para criar os módulos e importa-los, mas isso era em versões passadas, hoje esse o processo de criação de módulos foi mais simplificado para aumentar o processamento desses modulos.