Sobes.tech
Junior

Qual é a diferença entre let e var?

sobes.tech IA

Resposta da IA

O var tem escopo funcional ou global, pode ser redeclarado e sobrescrito. Está sujeito a Hoisting, inicializando-se como undefined. let tem escopo de bloco, pode ser sobrescrito, mas não redeclarado no mesmo escopo. Também está sujeito a Hoisting, mas encontra-se na "zona morta temporária" até à sua inicialização.

Tabela de comparação:

Característica var let
Escopo da variável Funcional/Global De bloco
Redeclaração Sim Não
Sobrescrita Sim Sim
Hoisting Sim Sim
Inicialização undefined - (zona morta temporária)

Exemplo:

// var
function exemploVar() {
  var x = 10;
  if (true) {
    var x = 20; // Redeclaração de x
    console.log(x); // 20
  }
  console.log(x); // 20
}

// let
function exemploLet() {
  let y = 10;
  if (true) {
    let y = 20; // Nova variável y na escopo de bloco
    console.log(y); // 20
  }
  console.log(y); // 10
}

exemploVar();
exemploLet();