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:
vartem escopo de função (function scope). Isso significa que uma variável declarada comvardentro de uma função é visível em toda a função.lettem escopo de bloco (block scope). A variável é visível apenas dentro das chaves{}mais próximas.
-
Elevação (hoisting):
- Variáveis declaradas com
varsão elevadas ao topo da sua função e inicializadas comundefined. - Variáveis com
lettambé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).
- Variáveis declaradas com
-
Re-declaração:
varpermite re-declarar a mesma variável várias vezes no mesmo escopo.letnã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.