Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

var count = 0;

while (count < 10) {

console.log(count);

count++;

}

Как видите, в начале переменной

count
присваивается значение 0, а затем ее значение увеличивается каждый раз, когда выполняется тело цикла. После того как цикл будет выполнен 10 раз, выражение вернет
false
(т.е. переменная count уже не меньше 10), инструкция
while
завершится и интерпретатор перейдет к
следующей инструкции в программе. Большинство циклов имеют переменные-счетчики, аналогичные
count
. Чаще всего в качестве счетчиков цикла выступают переменные с именами i, j и k, хотя для того чтобы сделать программный код более понятным, следует давать счетчикам более наглядные имена.

5.5.2. Инструкция do/while

Цикл

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

do

инструкция

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

Цикл

do/while
используется реже, чем родственный ему цикл
while
. Дело в том, что на практике ситуация, когда вы заранее уверены, что потребуется хотя бы один раз выполнить тело цикла, несколько необычна. Ниже приводится пример использования цикла
do/while
:

function printArray(a) {

var len = a.length, і = 0;

if (len == 0)

console.log("Пустой массив");

else {

do {

console.log(a[і]);

} while (++i < len);

}

}

Между циклом

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

5.5.3. Инструкция for

Инструкция

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

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

Инициализация, проверка и инкремент - это три выражения (разделенных точкой с запятой), которые ответственны за инициализацию, проверку и увеличение

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

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

5

Как мы увидим, когда будем знакомиться с инструкцией continue в разделе 5.6.3, этот цикл while не является точным эквивалентом цикла for.

)

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

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

инструкция

инкремент:

}

Другими словами, выражение инициализации вычисляется один раз перед началом цикла. Это выражение, как правило, является выражением с побочными эффектами (обычно присваиванием). В JavaScript также допускается, чтобы выражение инициализации было инструкцией объявления переменной

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

Вывести числа от 0 до 9 можно также с помощью цикла

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

for(var count = 0; count < 10; count++)

console.log(count);

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

var і, j

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

sum += і * j;

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

for
используется для обхода связанного списка структур данных и получения последнего объекта в списке (например, первого объекта, который не имеет свойства
next
):

function tail(о) { // Возвращает последний элемент в списке о

fоr(; о.next; о = о.next) /*пустое*/; // Выполнять обход, пока о.next

return о; // является истинным значением

}

Обратите внимание на отсутствие выражения инициализации в примере выше. Любое из трех выражений цикла

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

Поделиться:
Популярные книги

Жена неверного генерала, или Попаданка на отборе

Удалова Юлия
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Жена неверного генерала, или Попаданка на отборе

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

Гримуар темного лорда III

Грехов Тимофей
3. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда III

Меткий стрелок. Том II

Вязовский Алексей
2. Меткий стрелок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Меткий стрелок. Том II

Кукловод

Злобин Михаил
2. О чем молчат могилы
Фантастика:
боевая фантастика
8.50
рейтинг книги
Кукловод

Дракон

Бубела Олег Николаевич
5. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.31
рейтинг книги
Дракон

Дочь моего друга

Тоцка Тала
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Дочь моего друга

Жут

Май Карл Фридрих
Приключения:
вестерны
6.25
рейтинг книги
Жут

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Вернувшийся: Новая жизнь. Том I

Vector
1. Вернувшийся
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Новая жизнь. Том I

Камень. Книга восьмая

Минин Станислав
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Камень. Книга восьмая

Я уже барон

Дрейк Сириус
2. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже барон

Глава рода

Шелег Дмитрий Витальевич
5. Живой лёд
Фантастика:
боевая фантастика
6.55
рейтинг книги
Глава рода

Кодекс Охотника. Книга XXXVIII

Винокуров Юрий
38. Кодекс Охотника
Фантастика:
фэнтези
боевая фантастика
попаданцы
юмористическое фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXXVIII