[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/block [Back]  [Original]

block - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

block

Baseline Widely available

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:

In this article

Sintaxe

Declarao de Bloco

{
  ListaDeDeclaraes
}

Declarao de Bloco Nomeada

NomeIdentificador: {
  ListaDeDeclaraes
}
ListaDeDeclaraes

Declaraes agroupadas com a declarao em bloco.

NomeIdentificador

Um nome (label) opcional para identificao visual ou um alvo para break.

Descrio

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.

Regras de Bloqueio de Escopo

Com var

Variveis 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:

js
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.

Com let e const

Por contraste, variveis declaradas com let e const tem escopo bloqueado:

js
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:

js
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.

Especificaes

Specification
ECMAScript 2027 LanguageSpecification
# sec-block

Compatibilidade com navegadores

Veja tambm


Web Proxy Viewer  |  New URL  |  Original Page