0:00 Essa pergunta é como entrevistas. Esse código imprime undefined, mas não dá erro. Por quê? Se você não consegue explicar porque isso acontece, você não entende JavaScript de verdade. Nesse vídeo, eu vou explicar os conceitos fundamentais que todo engenheiro de software precisa dominar para entrevistas e também pro dia a dia. Hoisting, event loop, closures, promises, garbage collection e tratamento de erros. E vamos começar explicando aquele código do início. Hoisting significa literalmente issamento. O JavaScript puxa as
0:31 declarações pro topo do escopo antes de executar qualquer código. A declaração sobe, a atribuição fica onde tá. Por isso, console.log nome não dá erro. A variável já existe, só não tem valor ainda. Agora leia esse código. Let constrem hoing, mas fica numa zona chamada temporal dead zone, do início do bloco até a linha da declaração. Acessar elas nessa zona dá erro. E funções, depende de como você declara. Funções declaradas
1:01 com a keyword function são completamente içadas, nome e o corpo. Expressões de função sempre seguem as regras de variável. Diga tchau existe, mas é undefined, não é uma função. Resumindo, var sobe e vira undefined. Let constam na temporal dead zone. Funções declaradas sobem inteiras. Expressões de função sobem como variáveis. Mas eu falei que declarações sobem pro topo do escopo. E o que exatamente é esse escopo? O escopo define onde uma
🔒 The full, searchable transcript is available with Pro.