Блок (або складена інструкція у інших мовах) використовується, щоб об'єднати нуль або більше інструкцій. Блок позначається парою фігурних дужок і може мати необов'язкову мітку
:
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
Блок
{ StatementList }
Блок з міткою
LabelIdentifier: { StatementList }
Опис
Блок часто називають складеною інструкцією у інших мовах. Він дозволяє використовувати декілька інструкцій там, де 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