Обычно не требуется, чтобы интерпретатор JavaScript снова и снова выполнял одну и ту же операцию. Почти в каждом цикле с каждой итерацией цикла одна или несколько переменных изменяют свои значения. Поскольку переменная меняется, действия, которые выполняет инструкция, при каждом проходе тела цикла могут отличаться. Кроме того, если изменяемая переменная (или переменные) присутствует в выражении, значение выражения может меняться при каждом проходе цикла. Это важно, т. к. в противном случае выражение, значение которого было истинным, никогда не изменится и цикл никогда не завершится! Ниже приводится пример цикла while
, который выводит числа от 0 до 9:
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
необязательно завершать точкой с запятой, если тело цикла заключено в фигурные скобки.
Инструкция for
представляет собой конструкцию цикла, которая часто оказывается более удобной, чем инструкция while
. Инструкция for
упрощает конструирование циклов, следующих шаблону, общему для большинства циклов. Большинство циклов имеют некоторую переменную-счетчик. Эта переменная инициализируется перед началом цикла и проверяется перед каждой итерацией. Наконец, переменная-счетчик инкрементируется или изменяется каким-либо другим образом в конце тела цикла, непосредственно перед повторной проверкой переменной. Инициализация, проверка и обновление - это три ключевых операции, выполняемых с переменной цикла. Инструкция for делает эти три шага явной частью синтаксиса цикла:
for(инициализация; проверка; инкремент) инструкция
Инициализация, проверка и инкремент - это три выражения (разделенных точкой с запятой), которые ответственны за инициализацию, проверку и увеличение переменной цикла. Расположение их в первой строке цикла упрощает понимание того, что делает цикл for
, и не позволяет забыть инициализировать или увеличить переменную цикла.
Проще всего объяснить работу цикла for, показав эквивалентный ему цикл while: [5] Как мы увидим, когда будем знакомиться с инструкцией continue в разделе 5.6.3, этот цикл while не является точным эквивалентом цикла for.
)
инициализация;
while(проверка) {
Читать дальше
Конец ознакомительного отрывка
Купить книгу