Для того, чтобы позволить программам исполнять однотипные действия избегая ненужных повторений кода были придуманы циклы.
Основное назначение циклов в javascript это повторение однотипных действий необходимое нам количество раз. По-правильному это называется «итерация» (один прогон цикла).
while
Для повторения кода заданное количество раз обычно используется цикл while. Его синтаксис:
while (условие) { // содержимое цикла подлежащее повторению }
Код внутри фигурных скобок будет повторяться до тех пор, пока условие будет корректно.
Простейший пример цикла while:
var i = 0; while (i < 3) { alert(i); i++; }
После запуска данного цикла мы получим три модальных окна выводящих номер операции.
Для создания бесконечного цикла в качестве условия достаточно задать булево значение true:
while (true) { //наш код }
Это общепринятый способ создания бесконечного цикла. В прочих случаях (к примеру, если в рассмотренном нами примере убрать i++) возможен вариант «зависания» скрипта, о чем нам любезно сообщит браузер.
do … while
Как частный случай while можно рассматривать цикл do … while. Единственное его отличие заключается в том, что сначала выполняется тело цикла, а уже после происходит проверка его условия.
Он гораздо реже применяется на практике, поскольку не несет в себе существенных функциональных преимуществ и в то же время является менне очевидным в своем применении, поскольку чтобы понять сколько будет выполняться цикл приходится искать по коду его условие.
Пример do … while
var i = 0; do { alert(i); i++; } while (i < 3);
for
Самым распространенным в практике является цикл for. Его синтаксис:
for (начало; условие; шаг) { // код, который будет повторяться }
То, что задано, как начало цикла выполнится при первой его итерации.
При переходе на следующую итерацию будет проверено условие цикла, в зависимости от результатов которого будет или запущен следующий прогон цикла или произведен выход из него.
В шаге задается выражение, которое будет выполнено после каждого прогона цикла, но до начала следующей итерации.
Пример:
for (var i=0; i<3; i++) { alert(i); }
Обратите внимание, что мы можем определить переменную прямо в условиях цикла. Данный прием несколько упрощает код на практике.
При необходимости мы можем убирать любую часть for:
var i = 0; for (; i<3; i++) { //код для повторения } for (; i<3;) { //аналог while (i<3) //код для повторения } for (;;) { //аналог while (true) - бесконечный цикл //код для повторения }
Точки с запятой при этом оставлять обязательно. Их отсутствие приводит к ошибке в коде.