From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/statements/block/index.html | 180 +++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/statements/block/index.html (limited to 'files/pt-br/web/javascript/reference/statements/block') diff --git a/files/pt-br/web/javascript/reference/statements/block/index.html b/files/pt-br/web/javascript/reference/statements/block/index.html new file mode 100644 index 0000000000..6a86a4e7d7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/statements/block/index.html @@ -0,0 +1,180 @@ +--- +title: block +slug: Web/JavaScript/Reference/Statements/block +tags: + - Declaração + - JavaScript + - Reference + - Statement +translation_of: Web/JavaScript/Reference/Statements/block +--- +
{{jsSidebar("Statements")}}
+ +

Uma declaração em bloco (ou declaração composta (compound) em outras linguagens) é usado para agrupar nenhum ou mais declarações. O bloco é delimitado por um par de chaves e pode opcionalmente ser {{jsxref("Statements/label", "nomeado")}}:

+ +

Sintaxe

+ +

Declaração de Bloco

+ +
{
+  ListaDeDeclarações
+}
+
+ +

Declaração de Bloco Nomeada

+ +
NomeIdentificador: {
+  ListaDeDeclarações
+}
+
+ +
+
ListaDeDeclarações
+
Declarações agroupadas com a declaração em bloco.
+
NomeIdentificador
+
Um {{jsxref("Statements/label", "nome (label)")}} opcional para identificação visual ou um alvo para {{jsxref("Statements/break", "break")}}.
+
+ +

Descrição

+ +

A declaração em bloco é frequentemente chamada de declaração composta (compound) em outras linguagens. Ela permite que você use multiplas declarações onde o JavaScript espera apenas uma declaração. Combinar declarações em blocos são uma prática comum em JavaScript. O comportamento oposto é possível usando uma declaração vazia, onde você fornece nenhuma declaração, mesmo que uma seja requerida.

+ +

Regras de Bloqueio de Escopo

+ +

Com var

+ +

Variáveis declaradas com var não possuem bloqueio de escopo. Variáveis introduzidas com um bloco são guardadas no escopo da função que elas estão ou script, e os efeitos de configura-las persistem pelo próprio bloco. Em outras palavras, declarações em bloco não introduzem um escopo. Mesmo blocos "standalone" são sintaxes válidas, você não vai querer usar blocos standalone em JavaScript, porque não 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 declaração var x com o bloco está no mesmo escopo que a declaração var x antes do bloco. No C ou Java, o código equivalente iria imprimir 1.

+ +

Com let e const

+ +

Por contraste, variáveis declaradas com {{jsxref("Statements/let", "let")}} e {{jsxref("Statements/const", "const")}} tem escopo bloqueado:

+ +
let x = 1;
+{
+  let x = 2;
+}
+console.log(x); // imprime 1 1
+ +

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 não invoca uma throw SyntaxError...
+ +

Note que o escope bloqueado de const c = 2 não invoca uma SyntaxError: Identifier 'c' has already been declared porque ele foi unicamente declarado no bloco.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ESDraft', '#sec-block', 'Block statement')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-block', 'Block statement')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-12.1', 'Block statement')}}{{Spec2('ES5.1')}} 
{{SpecName('ES3', '#sec-12.1', 'Block statement')}}{{Spec2('ES3')}} 
{{SpecName('ES1', '#sec-12.1', 'Block statement')}}{{Spec2('ES1')}} +

Definição inicial. Implementada no JavaScript 1.0.

+
+ +

Compatibilidade de navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + -- cgit v1.2.3-54-g00ecf