Инструкция цикла do/while




Цикл do/while похож на цикл while, за исключением того, что выражение цикла проверяется в конце, а не в начале, и это значит, что тело цикла выполнится как минимум один раз. Вот синтаксис:

do {

ин­ст­рук­ция

} while (вы­ра­же­ние);

Между циклом do/while и обычным циклом while имеется два отличия:

1. Цикл do требует как ключевого слова do (для отметки начала цикла), так и ключевого слова while (для отметки конца цикла и указания условия).

2. Во-вторых, в отличие от цикла while, цикл do завершается точкой с запятой. Цикл while необязательно завершать точкой с запятой, если тело цикла заключено в фигурные скобки.

Инструкция цикла for

Инструкция for представляет собой цикл, который часто оказывается более удобней, чем while.

Большинство циклов имеют некоторую переменную-счетчик. Эта переменная инициализируется перед началом цикла и проверяется перед каждой итерацией. Наконец, переменная-счетчик инкрементируется или изменяется каким-либо другим образом в конце тела цикла, непосредственно перед повторной проверкой переменной.

Инициализация, проверка и обновление – это три ключевых операции, выполняемых с переменной цикла. Инструкция for делает эти три шага явной частью синтаксиса цикла:

for(ини­циа­ли­за­ция; про­вер­ка; ин­кре­мент) ин­ст­рук­ция;

Ини­циа­ли­за­ция, про­вер­ка и ин­кре­мент – это три выражения (разделенных точкой с запятой), которые ответственны за инициализацию, проверку и увеличение переменной цикла. Расположение их в первой строке цикла упрощает понимание того, что делает цикл for, и не позволяет забыть о них.

Проще всего объяснить работу цикла for, показав эквивалентный ему цикл while:

ини­циа­ли­за­ция;

while(про­вер­ка) {

ин­ст­рук­ция

ин­кре­мент;

}

В JS допускается, чтобы выражение ини­циа­ли­за­ции у инструкции for было инструкцией объявления переменной var или let поэтому можно одновременно объявить и инициализировать счетчик цикла.

Выражение про­вер­ки вычисляется перед каждой итерацией и определяет, будет ли выполняться тело цикла. Если результатом проверки является true, выполняется инст­рук­ция, являющаяся телом цикла.

В конце цикла вычисляется выражение инкре­мент. Чтобы использование этого выражения имело смысл, оно должно быть выражением с побочными эффектами. Обычно это либо выражение присваивания, либо выражение, использующее оператор ++ или --.

Вывести числа от 0 до 9 можно также с помощью цикла for, как показано ниже. В противовес эквивалентному циклу while, показанному в предыдущем разделе:

for(var count = 0; count < 10; count++) console.log(count);

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

Эта ситуация – единственный случай в JavaScript, когда часто применяется оператор «запятая» – он позволяет объединить несколько выражений инициализации и инкрементирования в одно выражение, подходящее для использования в цикле for:

var i, j;

for(i = 0, j = 10; i < 10; i++, j--) {

sum += i * j

}

Примечание

Любое из трех выражений цикла for может быть опущено, но две точки с запятой являются обязательными. Если опустить выражение про­вер­ки, цикл будет повторяться вечно, и форма записи for(;;) является еще одним способом написать бесконечный цикл, подобно while(true).

Метки инструкций

Любая инструкция может быть помечена идентификатором: иден­ти­фи­ка­тор: ин­ст­рук­ция

Как выглядит в коде:

metka: for(let i = 10; I; i--){

//тело цикла

}

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

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

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

Метки инструкций определены только внутри инструкций, к которым они применяются (и, конечно же, внутри вложенных в них инструкций).

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

Инструкция break

Инструкция break приводит к немедленному выходу из самого внутреннего цикла или инструкции switch (мы с ней уже знакомились).

Синтаксис ее прост: break;

Ранее мы уже знакомились с использованием инструкции break внутри инструкции switch. В циклах она обычно используется для немедленного выхода из цикла, когда по каким-либо причинам требуется завершить выполнение цикла.

В языке JS допускается указывать имя метки за ключевым словом break (идентификатор без двоеточия): break имя_мет­ки; Когда инструкция break используется с меткой, она выполняет переход в конец именованной инструкции. В случае отсутствия инструкции с указанной меткой попытка использовать такую форму инструкции break порождает синтаксическую ошибку.

Именованная инструкция не обязана быть циклом или инструкцией switch: инструкция break с меткой может выполнять «выход» из любой вмещающей ее инструкции. Объемлющая инструкция может даже быть простым блоком инструкций, заключенным в фигурные скобки исключительно с целью пометить его.

Важно!

Между ключевым словом break и именем метки не допускается вставлять символ перевода строки.

Инструкция continue

Инструкция continue должна использоваться только внутри циклов. Она схожа с инструкцией break, однако вместо выхода из цикла инструкция continue запускает новую итерацию цикла.

Синтаксис инструкции прост:

for(let i = 10; I; i--){

//тело цикла

continue;

}

Инструкция continue может также использоваться с меткой: continue имя_мет­ки;

Когда выполняется инструкция continue, текущая итерация цикла прерывается и начинается следующая. Для разных типов циклов это означает разное:

· В цикле while указанное в начале цикла вы­ра­же­ние проверяется снова, и если оно равно true, тело цикла выполняется с начала.

· В цикле do/while происходит переход в конец цикла, где перед повторным выполнением цикла снова проверяется условие.

· В цикле for вычисляется выражение ин­кре­мен­та и снова вычисляется выражение про­вер­ки, чтобы определить, следует ли выполнять следующую итерацию.

Обратите внимание на различия в поведении инструкции continue в циклах while и for: цикл while возвращается непосредственно к своему условию, а цикл for сначала вычисляет выражение ин­кре­мен­та, а затем возвращается к условию. Поскольку инструкция continue ведет себя в этих двух циклах по-разному, точно имитировать цикл for с помощью одного цикла while невозможно.

Важно!

Переводы строк между ключевым словом continue и именем метки не допускаются.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-05-09 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: