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 e const para declarar variáveis ​​em vez de var, 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 ou const.

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 e const para declarar variáveis ​​em vez de var.

Continue aprendendo sobre içamento para escrever código JavaScript mais limpo e eficiente!

<< Escopos em JavaScript Coerção em JavaScript >>