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();