| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/let | [Back] [Original] |
Get to know MDN better
Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since setembro de 2016.
Declara uma varivel local no escopo do bloco atual, opcionalmente iniciando-a com um valor.
Definio let:
let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];
Expresso let:
let (var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]) expression;
Instruo let:
let (var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]]) statement;
| Parameter | Description |
|---|---|
var1, var2, , varN |
Nome da varivel. Pode ser qualquer identificador vlido. |
value1, value2, , valueN |
Valor inicial da varivel. Pode ser qualquer expresso vlida. |
expression |
Qualquer expresso vlida. |
statement |
Qualquer instruo vlida. |
let permite que voc declare variveis limitando seu escopo no bloco, instruo, ou em uma expresso na qual ela usada. Isso inverso da keyword var, que define uma varivel globalmente ou no escopo inteiro de uma funo, independentemente do escopo de bloco.
Nota:
Nota do tradutor: o trecho acima: "independentemente do escopo de bloco", na verdade, significa dizer que variveis declaradas dentro de blocos internos da funo, por exemplo, so vinculadas no escopo da funo, no no bloco no qual elas so declaradas. Se isso parece confuso - e realmente -, apenas entenda que, ao contrrio do que se poderia supor, em Javascript blocos no possuem escopo como em outras linguagens, somente funes tm! Isso quer dizer que mesmo uma vriavel definida com a keyword var dentro de um bloco de instruo if, ser visvel no resto inteiro da funo.
Variveis declaradas com let so "iadas" para comeo do bloco em que elas so definidas (isso conhecido tambm pelo termo, hoisting).
Redeclarao de uma mesma varivel num mesmo escopo de bloco causa um TypeError.
if (x) {
let foo;
let foo; // Emite um TypeError.
}
No entanto, corpos de funes no possuem essa limitao!
function do_something() {
let foo;
let foo; // Isso funciona.
}
Aviso:
Ateno: Os rascunhos do ECMAScript 6 (desde abril de 2012) tornam este comportamento ilegal. Isso significa, provavelmente, que as futuras verses do JavaScript levantaro um TypeError. Ento, se voc faz isso, deveria evitar essa prtica!
Voc pode encontrar erros em instrues switch porque existe apenas um bloco subjacente.
switch (x) {
case 0:
let foo;
break;
case 1:
let foo; // TypeError para a redeclarao.
break;
}
Uma expresso let limita o escopo de uma varivel declarada somente para aquela expresso.
var a = 5;
let(a = 6) alert(a); // 6
alert(a); // 5
Usada dentro de um bloco, let limita os escopo das variveis para aquele bloco. Observe a diferena entre var em que o escopo definido dentro da funo onde declarada
var a = 5;
var b = 10;
if (a === 5) {
let a = 4; // O escopo dentro do bloco if
var b = 1; // O escopo dentro da funo
console.log(a); // 4
console.log(b); // 1
}
console.log(a); // 5
console.log(b); // 1
possvel usar a keyword let para vincular variveis localmente no escopo de loops em vez de usar uma varivel global (definida usando var) para isso.
for (let i = 0; i < 10; i++) {
alert(i); // 1, 2, 3, 4 ... 9
}
alert(i); // i no est definida
This page was last modified on 12 de out. de 2025 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |