let Declaração
Última atualização: 2026-10-13
let Declaração
| Categoria | Declarações |
|---|
⚙️ Parâmetros
| 变量名 | |
|---|---|
| 初始值 |
Modifica o original:Não (retorna um novo valor)
💡 Dica
⚠️ Aviso
🌐 Suporte do navegador
| Navegador | |||||
|---|---|---|---|---|---|
| let | ✓ v49 | ✓ v12 | ✓ v44 | ✓ v10 | ✓ v36 |
| Suportado por todos os navegadores modernos | |||||
🏷️ Declarações relacionadas
💡 Casos relacionados
Mais estudos de caso em breve — aguarde.
📚 Tutoriais relacionados
❓ Perguntas frequentes
QQual é a diferença entre let e var?
ATrês pontos: escopo (let tem escopo de bloco, var tem escopo de função e pode vazar para o objeto global), redeclaração (let proíbe, var permite) e hoisting (let mantém o binding na zona morta temporal e lança erro, var retorna undefined).
QPor que usar uma variável let antes de declará-la lança um erro?
AO intervalo entre entrar no escopo e executar a declaração let é chamado de zona morta temporal (TDZ). O binding existe, mas não foi inicializado, então acessá-lo lança um ReferenceError. Isso é intencional: evita os bugs silenciosos de undefined que var permite.
QPor que o let se comporta de forma diferente dentro de loops?
ACom let, cada iteração recebe sua própria cópia da variável de loop (herdando o valor anterior), então cada closure captura a sua própria iteração. Com var há um único binding compartilhado, então os callbacks observam apenas o último valor.