Hoisting em JavaScript
Introdução Link to heading
Hoisting é um comportamento fundamental em JavaScript que afeta a forma como variáveis e funções são interpretadas no código.
Içamento com variáveis Link to heading
- Em versões mais antigas do JavaScript (antes do ECMAScript 6), as variáveis declaradas com
var
são “elevadas” ao topo do seu escopo (função ou global). - Isso significa que você pode acessar uma variável declarada com
var
antes de sua linha de declaração dentro do mesmo escopo.
Exemplo Link to heading
console.log(meuNome); // Exibe "indefinido" / "undefined"
var meuNome; // É declarado
meuNome = "John"; // Está inicializado
// A variável pode ser acessada antes de sua declaração
O que realmente está acontecendo? Link to heading
- O interpretador JavaScript cria a variável como
indefinida
no início do escopo. - Quando a linha
console.log(meuNome)
é executada, é impresso o valor atual da variável, que éindefinido
. - Posteriormente, o valor “John” é atribuído à variável
meuNome
.
Içamento com funções Link to heading
- As funções também são “elevadas” no início do escopo.
- Isso significa que você pode chamar uma função antes de sua declaração dentro do mesmo escopo.
Exemplo Link to heading
ei();
function ei() {
console.log("Olá " + meuNome);
}
var meuNome = "John";
//A função pode ser chamada antes de sua declaração
O que realmente está acontecendo? Link to heading
- A função
ei()
é elevada ao início do escopo. - Quando a linha
ei()
é executada, a função é pesquisada e executada. - A variável
meuNome
ainda não está definida, então “Hello undefined” é impresso. - Posteriormente, o valor “John” é atribuído à variável
meuNome
.
Considerações importantes: Link to heading
- O içamento pode ser útil em alguns casos, mas também pode levar a erros e confusão se não for entendido corretamente.
- Recomenda-se usar
let
econst
para declarar variáveis em vez devar
, pois estas não são “elevadas” e seu escopo é melhor definido. - As funções são sempre “elevadas” ao início do escopo, independentemente de serem declaradas com
var
,let
ouconst
.
Em resumo Link to heading
- Hoisting é um comportamento que “eleva” variáveis e funções para o início do escopo.
- É importante entender como funciona o içamento para evitar erros e confusões no código.
- É recomendado usar
let
econst
para declarar variáveis em vez devar
.
Continue aprendendo sobre içamento para escrever código JavaScript mais limpo e eficiente!