Sobes.tech
Junior — Middle

Qual é a diferença entre declarar variáveis usando as palavras-chave var e let, e quais são as suas características?

sobes.tech IA

Resposta da IA

No JavaScript (e Node.js), as palavras-chave var e let são usadas para declarar variáveis, mas têm diferenças importantes:

  • Escopo:

    • var tem escopo de função (function scope). Isso significa que uma variável declarada com var dentro de uma função é visível em toda a função.
    • let tem escopo de bloco (block scope). A variável é visível apenas dentro das chaves {} mais próximas.
  • Elevação (hoisting):

    • Variáveis declaradas com var são elevadas ao topo da sua função e inicializadas com undefined.
    • Variáveis com let também são elevadas, mas não são inicializadas, o acesso a elas antes da declaração gera um erro (Zona Morta Temporária).
  • Re-declaração:

    • var permite re-declarar a mesma variável várias vezes no mesmo escopo.
    • let não permite re-declarar uma variável no mesmo escopo.

Exemplo:

function exemplo() {
  console.log(a); // undefined
  // console.log(b); // Erro: não pode usar antes de declarar

  var a = 1;
  let b = 2;

  if (true) {
    var a = 3; // redefine a variável a na função
    let b = 4; // nova variável b no bloco if
    console.log(b); // 4
  }

  console.log(a); // 3
  console.log(b); // 2
}

exemplo();

O uso de let é preferível para controlar o escopo e evitar erros relacionados à re-declaração e ao comportamento inesperado de var.