Saber que o Hoisting ocorre te ajuda a entender melhor como o Javascript lida com variáveis, e pode evitar alguns bugs bem misteriosos!
Nesse artigo, você irá aprender o que é o Hoisting e outros termos importantes relacionados a ele. Vamos lá!?
O que é o Hoisting?
O Hoisting ocorre quando seu código Javascript é compilado : Basicamente, todas as declarações de variáveis são movidas para o topo de seu escopo local (se foram declaradas dentro de uma função, por exemplo) ou para o topo do escopo global (se foram declaradas fora de uma função). Declaração de funções e classes também são movidas para o topo e ficam acima das declarações das variáveis.
Exemplos:

Podemos ver que a função foi executada normalmente mesmo que ela tenha sido chamada antes da sua declaração.

A execução do código acima tem como resposta “undefined” por que apenas a declaração das variáveis são movidas para o topo e não a sua inicialização.

Aqui tudo ocorre como o esperado, após acontecer o hoisting o código é executado da seguinte maneira:

Quais são as diferenças entre let, const e var em termos de hoisting:
a) Var
O var pode ser declarado sem ser inicializado e está disponível fora do seu escopo.

b) Let
O let pode ser declarado sem ser inicializado mas não está disponível fora do seu escopo.

C) Const
O const não pode ser declarada sem ser inicializada e não está disponível fora do ser escopo.
