MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-survey

Esta tradução está incompleta. Por favor, ajude a traduzir este artigo do Inglês.

Uma declação block (ou declaração compound em outras linguagens) é utilizada para agrupar zero ou mais declarações. Block é delimitado por um par de chavetas e pode ser opcional labelled:

Sintaxe

Declaração Block

{
  StatementList
}

Declaração Block Etiquetada

LabelIdentifier: {
  StatementList
}
StatementList
Statements grouped within the block statement.
LabelIdentifier
An optional label for visual identification or as a target for break.

Descrição

The block statement is often called compound statement in other languages. It allows you to use multiple statements where JavaScript expects only one statement. Combining statements into blocks is a common practice in JavaScript. The opposite behavior is possible using an empty statement, where you provide no statement, although one is required.

Regras de Dimensionamento Block

Com var

Variables declared with var do not have block scope. Variables introduced with a block are scoped to the containing function or script, and the effects of setting them persist beyond the block itself. In other words, block statements do not introduce a scope. Although "standalone" blocks are valid syntax, you do not want to use standalone blocks in JavaScript, because they don't do what you think they do, if you think they do anything like such blocks in C or Java. For example:

var x = 1;
{
  var x = 2;
}
console.log(x); // logs 2

This logs 2 because the var x statement within the block is in the same scope as the var x statement before the block. In C or Java, the equivalent code would have outputted 1.

Com let e const

By contrast, identifiers declared with let and const do have block scope:

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

The x = 2 is limited in scope to the block in which it was defined.

The same is true of const:

const c = 1;
{
  const c = 2;
}
console.log(c); // logs 1 and does not throw SyntaxError...

Note that the block-scoped const c = 2 does not throw a SyntaxError: Identifier 'c' has already been declared because it can be declared uniquely within the block.

Especificações

Especificação Estado Comentário
ECMAScript Latest Draft (ECMA-262)
The definition of 'Block statement' in that specification.
Living Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Block statement' in that specification.
Standard  
ECMAScript 5.1 (ECMA-262)
The definition of 'Block statement' in that specification.
Standard  
ECMAScript 3rd Edition (ECMA-262)
The definition of 'Block statement' in that specification.
Standard  
ECMAScript 1st Edition (ECMA-262)
The definition of 'Block statement' in that specification.
Standard Initial definition. Implemented in JavaScript 1.0.

Compatibilidade de navegador

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes Yes Yes Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic support Yes Yes Yes Yes Yes Yes Yes

Consulte também

Etiquetas do documento e contribuidores

 Contribuidores para esta página: mansil
 Última atualização por: mansil,