Книга: JavaScript. Подробное руководство, 6-е издание
5.5.3. Инструкция for
5.5.3. Инструкция for
Инструкция for
представляет собой конструкцию цикла, которая часто оказывается более удобной, чем инструкция while
. Инструкция for
упрощает конструирование циклов, следующих шаблону, общему для большинства циклов. Большинство циклов имеют некоторую переменную-счетчик. Эта переменная инициализируется перед началом цикла и проверяется перед каждой итерацией. Наконец, переменная-счетчик инкрементируется или изменяется каким-либо другим образом в конце тела цикла, непосредственно перед повторной проверкой переменной. Инициализация, проверка и обновление - это три ключевых операции, выполняемых с переменной цикла. Инструкция for делает эти три шага явной частью синтаксиса цикла:
for(инициализация; проверка; инкремент) инструкция
Инициализация, проверка и инкремент - это три выражения (разделенных точкой с запятой), которые ответственны за инициализацию, проверку и увеличение переменной цикла. Расположение их в первой строке цикла упрощает понимание того, что делает цикл for
, и не позволяет забыть инициализировать или увеличить переменную цикла.
Проще всего объяснить работу цикла for, показав эквивалентный ему цикл while:[5]
инициализация;
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).
- 11. Зарабатываем на рынке Forex
- 1.3 Инструкция for
- 3.8 Инструкция goto и метки
- 5.3.1. Инструкция var
- 5.5.4. Инструкция for
- 5.6.2. Инструкция break
- Forced writes - палка о двух концах
- Forced Writes
- Инструкция IIF
- Инструкция INSERT INTO ... FROM ... UNION ...
- Что дает грамотная должностная инструкция
- Chapter 15. Graphical User Interfaces for Iptables