| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/block | [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 julho de 2015.
Uma declarao em bloco (ou declarao composta (compound) em outras linguagens) usado para agrupar nenhum ou mais declaraes. O bloco delimitado por um par de chaves e pode opcionalmente ser nomeado:
{
ListaDeDeclaraes
}
NomeIdentificador: {
ListaDeDeclaraes
}
ListaDeDeclaraesDeclaraes agroupadas com a declarao em bloco.
NomeIdentificadorUm nome (label) opcional para identificao visual ou um alvo para break.
A declarao em bloco frequentemente chamada de declarao composta (compound) em outras linguagens. Ela permite que voc use multiplas declaraes onde o JavaScript espera apenas uma declarao. Combinar declaraes em blocos so uma prtica comum em JavaScript. O comportamento oposto possvel usando uma declarao vazia, onde voc fornece nenhuma declarao, mesmo que uma seja requerida.
varVariveis declaradas com var no possuem bloqueio de escopo. Variveis introduzidas com um bloco so guardadas no escopo da funo que elas esto ou script, e os efeitos de configura-las persistem pelo prprio bloco. Em outras palavras, declaraes em bloco no introduzem um escopo. Mesmo blocos "standalone" so sintaxes vlidas, voc no vai querer usar blocos standalone em JavaScript, porque no fazem o que voc pensa que eles fazem, se voc pensa que eles fazer coisas como blocos em C ou Java. Por exemplo:
var x = 1;
{
var x = 2;
}
console.log(x); // imprime 2
Isso loga 2 porque a declarao var x com o bloco est no mesmo escopo que a declarao var x antes do bloco. No C ou Java, o cdigo equivalente iria imprimir 1.
let e constPor contraste, variveis declaradas com let e const tem escopo bloqueado:
let x = 1;
{
let x = 2;
}
console.log(x); // imprime 1 1
O x = 2 limitado ao escopo do bloco em que ele foi definido.
O mesmo true de const:
const c = 1;
{
const c = 2;
}
console.log(c); // imprime 1 e no invoca uma throw SyntaxError...
Note que o escope bloqueado de const c = 2 no invoca uma SyntaxError: Identifier 'c' has already been declared porque ele foi unicamente declarado no bloco.
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-block |
This page was last modified on 8 de nov. de 2023 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 |