Инструкции и объявления
=======================

Приложения на JavaScript состоят из инструкций с соответствующим синтаксисом. Одна инструкция может состоять из нескольких строк. На одной строке может находиться несколько инструкций, если они разделены точкой с запятой. Они являются не ключевыми словами, а группами ключевых слов.

Инструкции и объявления по категориям
-------------------------------------

Алфавитный список смотрите в боковой панели слева.

### Управление потоком выполнения

Блок

Блок используется для группировки нуля и более инструкций. Блок отделяется парой фигурных скобок.

`break`

Прерывает текущую инструкцию цикла, ветвления или инструкцию с меткой и передаёт управление на инструкцию, следующую за прерываемой.

`continue`

Прерывает выполнение инструкции в текущей итерации текущего цикла или цикла с меткой и продолжает выполнение цикла со следующей итерации.

Пустая инструкция

Пустая инструкция используется тогда, когда никакой инструкции быть не должно, а по синтаксису JavaScript она требуется.

`if...else`

Выполняет инструкцию, если указанное условие является истинным. Если условие ложно, выполняет другую инструкцию.

`switch`

Вычисляет выражение, сопоставляет вычисленное значение с выражением выбора и выполняет инструкции, ассоциированные с этим выбором.

`throw`

Выбрасывает пользовательское исключение.

`try...catch`

Помечает блок инструкций и определяет реакцию на возникновение исключения внутри помеченного блока инструкций.

### Объявления

`var`

Объявляет переменную, необязательно инициализирует её значением.

Экспериментальная возможность `let`

Объявляет локальную переменную в области видимости блока, необязательно инициализирует её значением.

Экспериментальная возможность `const`

Объявляет именованную константу только для чтения.

### Функции

`function`

Объявляет функцию с указанными параметрами.

Экспериментальная возможность `function*`

Функции-генераторы, упрощающие написание итераторов.

`return`

Определяет значение, возвращаемое из функции.

Экспериментальная возможность `yield` (en-US)

Смотрите статьи Что нового в JavaScript 1.7 и Итераторы и генераторы (en-US).

### Итерации

`do...while`

Создаёт цикл, выполняющий указанную инструкцию до тех пор, пока проверяющее условие равно `false`. Условие вычисляется после выполнения инструкции, так что указанная инструкция выполнится хотя бы один раз.

`for`

Создаёт цикл, состоящий из трёх необязательных выражений, заключённых в круглые скобки и разделённым точками с запятой с последующей инструкцией, выполняющейся в цикле.

Устарело 
Non-standard
 `for each...in`

Проходит указанной переменной по всем значениям свойств объекта. Выполняет инструкции для каждого уникального свойства.

`for...in`

В случайном порядке проходит по перечислимым свойствам объекта. Выполняет инструкции для каждого уникального свойства.

Экспериментальная возможность `for...of`

Проходит по итерируемым объектам (включающим в себя массивы, массивоподобные объекты и итераторы с генераторами (en-US)), выполняя пользовательский хук с инструкциями, исполняющимися для значения каждого уникального свойства.

`while`

Создаёт цикл, выполняющий указанную инструкцию до тех пор, пока проверяющее условие равно `true`. Условие вычисляется перед выполнением инструкции..

### Прочее

`debugger`

Вызывает любую доступную функциональность отладки. Если функциональность отладки не доступна, эта инструкция ничего не делает.

`export`

Используется для экспорта подписанным скриптом свойств, функций и объектов в другие подписанные или неподписанные скрипты. Эта древняя функциональность Netscape была удалена и будет пересмотрена модулями ECMAScript 6.

`import`

Используется для импорта скриптом свойств, функций и объектов из подписанного скрипта, который предоставил эту информацию. Эта древняя функциональность Netscape была удалена и будет пересмотрена модулями ECMAScript 6.

`label`

Предоставляет инструкцию с идентификатором, на который вы можете сослаться с помощью инструкций `break` или `continue`.

Устарело `with`

Расширяет цепочку областей видимости инструкции.

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-async-function-definitions |
| ECMAScript Language Specification # sec-async-generator-function-definitions |
| ECMAScript Language Specification # sec-block |
| ECMAScript Language Specification # sec-break-statement |
| ECMAScript Language Specification # sec-class-definitions |
| ECMAScript Language Specification # sec-let-and-const-declarations |
| ECMAScript Language Specification # sec-continue-statement |
| ECMAScript Language Specification # sec-debugger-statement |
| ECMAScript Language Specification # sec-do-while-statement |
| ECMAScript Language Specification # sec-empty-statement |
| ECMAScript Language Specification # sec-exports |
| ECMAScript Language Specification # sec-for-statement |
| ECMAScript Language Specification # sec-for-in-and-for-of-statements |
| ECMAScript Language Specification # sec-function-definitions |
| ECMAScript Language Specification # sec-generator-function-definitions |
| ECMAScript Language Specification # sec-if-statement |
| ECMAScript Language Specification # sec-imports |
| ECMAScript Language Specification # sec-labelled-statements |
| ECMAScript Language Specification # sec-return-statement |
| ECMAScript Language Specification # sec-switch-statement |
| ECMAScript Language Specification # sec-throw-statement |
| ECMAScript Language Specification # sec-try-statement |
| ECMAScript Language Specification # sec-variable-statement |
| ECMAScript Language Specification # sec-while-statement |
| ECMAScript Language Specification # sec-with-statement |

Смотрите также
--------------

* Операторы