Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Block statement

BaselineWidely available

Ablock statement is used to group zero or more statements. The block is delimited by a pair of braces ("curly braces") and contains a list of zero or more statements and declarations.

Try it

var x = 1;let y = 1;if (true) {  var x = 2;  let y = 2;}console.log(x);// Expected output: 2console.log(y);// Expected output: 1

Syntax

js
{  StatementList}
StatementList

Statements and declarations grouped within the block statement.

Description

The block statement is often called thecompound 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, especially when used in association with control flow statements likeif...else andfor. The opposite behavior is possible using anempty statement, where you provide no statement, although one is required.

In addition, combined with block-scoped declarations likelet,const, andclass, blocks can prevent temporary variables from polluting the global namespace, just likeIIFEs do.

Block scoping rules with var or function declaration in non-strict mode

Variables declared withvar or created byfunction declarations in non-strict modedo not have block scope. Variables introduced within a block are scoped to the containing function or script, and the effects of setting them persist beyond the block itself. For example:

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

This logs 2 because thevar x statement within the block is in the same scope as thevar x statement before the block.

In non-strict code, function declarations inside blocks behave strangely. Do not use them.

Block scoping rules with let, const, class, or function declaration in strict mode

By contrast, identifiers declared withlet,const, andclass do have block scope:

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

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

The same is true ofconst:

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

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

Instrict mode, function declarations inside blocks are scoped to that block and are hoisted to the top of the block.

js
"use strict";{  foo(); // Logs "foo"  function foo() {    console.log("foo");  }}foo(); // ReferenceError: foo is not defined

Examples

Using a block statement as the body of a for loop

Afor loop accepts a single statement as its body.

js
for (let i = 0; i < 10; i++) console.log(i);

If you want to use more than one statement in the loop body, you can group them into one block statement:

js
for (let i = 0; i < 10; i++) {  console.log(i);  console.log(i ** 2);}

Using a block statement to encapsulate data

let andconst declarations are scoped to the containing block. This allows you to hide data from the global scope without wrapping it in a function.

js
let sector;{  // These variables are scoped to this block and are not  // accessible after the block  const angle = Math.PI / 3;  const radius = 10;  sector = {    radius,    angle,    area: (angle / 2) * radius ** 2,    perimeter: 2 * radius + angle * radius,  };}console.log(sector);// {//   radius: 10,//   angle: 1.0471975511965976,//   area: 52.35987755982988,//   perimeter: 30.471975511965976// }console.log(typeof radius); // "undefined"

Specifications

Specification
ECMAScript® 2026 Language Specification
# sec-block

Browser compatibility

See also

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp