Você já ouviu falar sobre Hoisting em JavaScript? Esse conceito pode parecer confuso no início, mas é fundamental para entender como o JavaScript manipula variáveis e funções no momento de execução.

O que é Hoisting?

Hoisting é um comportamento padrão do JavaScript no qual variáveis e funções são movidas para o topo do escopo, seja ele global ou local, antes da execução do código. Isso significa que você pode declarar variáveis e funções em qualquer parte do seu código, e elas estarão acessíveis antes mesmo de serem declaradas.

Como funciona na prática?

Para entender melhor, vejamos um exemplo com variáveis:

console.log(nome); // undefined
var nome = "João";
console.log(nome); // João

No exemplo acima, você poderia esperar um erro na primeira linha, mas o que acontece é que o JavaScript “eleva” a declaração da variável nome para o topo do escopo, embora o valor atribuído a ela só seja definido na linha onde está a inicialização. Por isso, o resultado é undefined na primeira chamada.

No caso das funções, o comportamento é um pouco diferente. As funções são completamente elevadas, incluindo seu conteúdo:

saudar(); // Olá!
function saudar() {
  console.log("Olá!");
}

Aqui, mesmo chamando a função saudar() antes de sua definição, o JavaScript a “eleva”, tornando-a acessível em qualquer parte do escopo.

Hoisting com let e const

Com a introdução do let e const no ES6, o comportamento de hoisting foi parcialmente modificado. Embora essas variáveis ainda sejam elevadas, elas não podem ser acessadas antes da linha de sua declaração:

console.log(nome); // ReferenceError: Cannot access 'nome' before initialization
let nome = "João";

Isso acontece porque, diferentemente de var, as variáveis declaradas com let e const entram em um estado de “zona morta temporal” (TDZ – Temporal Dead Zone), onde não podem ser acessadas até que sua definição seja encontrada no código.

Outro exemplo prático

console.log('Valor = ', x)
var x = 5
concole.log('Valor = ', x)

No exemplo acima será impresso os valores Valor = undefined e Valor = 5, pois a variável x foi declarada na linha 2 mas foi “içada” para a linha 1 (existia mas não foi definida – sem valor).

 function valor() {
  console.log('Valor = ', x)
  var x = 5
  concole.log('Valor = ', x)
 }

No exemplo acima a variável x foi “içada” para fora da função.

Não é possível utilizar a técnica do hoisting em variáveis declaradas com a palavra chave let. O uso gera um erro.

O hoisting é um comportamento peculiar, mas poderoso, que pode causar confusão se não for bem compreendido. Ao trabalhar com JavaScript, é essencial lembrar-se de como variáveis e funções são elevadas no escopo para evitar erros inesperados e garantir que o seu código funcione como planejado.

QUER SER UM PROGRAMADOR FULL-STACK E DOMINAR AS PRINCIPAIS TECNOLOGIAS DO MERCADO?

Aprenda através de projetos reais e aulas práticas. São 20 cursos completos + cursos bônus. Grupos privados exclusivos, atualizações constantes e lives semanais.

Python, PHP, Java Script, CSS, Node, Angular JS, MySQL, Photoshop, Flutter, AWS, Apache e muito mais!

CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre hoisting em JavaScript? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *