Блок

Блок (або складена інструкція у інших мовах) використовується, щоб об'єднати нуль або більше інструкцій. Блок позначається парою фігурних дужок і може мати необов'язкову мітку:

Синтаксис

Блок

{
  StatementList
}

Блок з міткою

LabelIdentifier: {
  StatementList
}
StatementList
Інструкції, згруповані всередині блоку.
LabelIdentifier
Необов'язкова мітка для візуальної ідентифікації або як вказівник для оператора break.

Опис

Блок часто називають складеною інструкцією у інших мовах. Він дозволяє використовувати декілька інструкцій там, де JavaScript очікує лише одну. Об'єднання інструкцій у блоки є звичайною практикою у JavaScript. Протилежна поведінка можлива завдяки порожньому оператору, де ви не надаєте інструкцію, хоча вона вимагається.

Блоки часто використовуються у поєднанні з операторами if та for.

Правила області видимості блоку

З var та оголошенням функцій

Змінні, оголошені оператором var або створені оголошенням функційне мають блочної області видимості. Змінні, створені всередині блоку, додаються у область видимості функції або скрипта, що його містить, і ефект від присвоєння їм значення виходить за межі блоку. Іншими словами, блок не створює область видимості. Для прикладу:

var x = 1;
{
  var x = 2;
}
console.log(x); // виведе 2

Цей код виведе 2, тому що інструкція var x всередині блоку знаходиться в тій самій області видимості, що й інструкція var x перед блоком.

З let та const

А ось ідентифікатори, оголошені операторами let та const мають блочну область видимості:

let x = 1;
{
  let x = 2;
}
console.log(x); // виведе 1

Інструкція x = 2 обмежена областю видимості блоку, у якому записана.

Те саме працює для const:

const c = 1;
{
  const c = 2;
}
console.log(c); // виведе 1 і не викине SyntaxError...

Зауважте, що const c = 2 у області видимості блоку не викине SyntaxError: Identifier 'c' has already been declared, тому що оголошення є унікальним всередині блоку.

Специфікації

Специфікація Статус Коментар
ECMAScript (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 Початкове визначення. Реалізоване у JavaScript 1.0.

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також