Оператор цикла обеспечивает многократное выполнение блока програмного кода до тех пор, пока не выполнится некоторое условие. В JavaScrip предусмотрены три оператора цикла: for, while и do-while. При создании программ вполне можно обойтись каким-нибудь одним из них, но возникают ситуации, в которых один из операторов более удобен, чем другой.
Оператор for(для) также называют оператором со счетчиком циклов, хотя в нем не обязательно использовать счетчик. Вот синтаксис этого оператора:
for([Начальное_ выражение]; [условие]; [выражение_обновления])
{
код
}
Здесь квадратные скобки указывают на то, что заключенные вних параметры не являются обязательными.
Все, что происходит в круглых скобках справа от ключевого слова for, называется заголовком оператора цикла, а содержимое фигурных скобок его телом.
В заголовке оператора цикла начальное выражение обрабатывается только один раз в начале выполнения оператора.
Второй параметр представляет собой условие продолжения работы оператора цикла. Он аналогичен условию оператора if.
Третий параметр содержит выражение, которое выполняется после выполнения всех выражений кода, заключенного в фигурные скобки.
Оператор работает следующим образом. Сначала выполняется начальное_выражение. Затем проверяется условие. Если оно ложно, то оператор цикла прекращает работу(при этом код не выполняется). В противном случае выполняется код, расположенный в теле оператора for, т.е между фигурными скобками. После этого выполняется выражение_обновления(третий параметр for). Так заканчивается первый цикл или первая итерация цикла. Далее, снова проверяется условие, и все повторяется сначала.
Обычно в качестве переменной начального выражения используют оператор присвоения значения переменной. Например i = 0 или var i = 0. Эту переменную называют счетчиком цикла. В этом случае условие, как правило, представляет собой элементарное выражение сравнения переменной счетчика цикла с некоторым числом, например i<=nMax. Выражение обновления в таком случае просто изменяют значение счетчика, например, i = i +1 или i++.
Рассмотрим пример, где оператор цикла изменяет значение счетчика, выполняя 15 итераций.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Операторы цикла</title>
<script language="JavaScript">
var s=1;
for (i=1; i<=15; i++) {
s=s+i
}
alert(s)
alert(s+i)
</script>
</head>
<body>
</body>
</html>
Где,
i=1-начальное_ выражение;
i<=15-условие;
i++-выражение_обновления;
s=s+i-код
В окне веб-браузера это будет выглядеть ТАК.
Для принудительного выхода из цикла используется оператор break(прерывание). Типовая структура оператора цикла с использованием break имеет следующий вид:
for([Начальное_ выражение]; [условие]; [выражение_обновления])
{
код
if (условие 2) {
код
break
}
код
}
Для управления вычислениями в операторе цикла можно также использовать оператор continue(продолжение). Также, как и break этот оператор применяется в теле оператора цикла вместе с оператором условного перехода. В отличие от break, оператор continue прекращает выполнение последующего кода, выполняет выражение обновления и возвращает вычислительный процесс в начало оператора цикла, где производится проверка условия, указанного в заголовке.
for([Начальное_ выражение]; [условие]; [выражение_обновления])
{
код
if (условие 2) {
код
continue
}
код
}
Оператор цикла while(до тех пор пока) имеет более прстую структуру, чем оператор for, и работает иначе.
while(условие)
{
код
}
При выполнении этого оператора сначала производится проверка условия, указанного в заголовке, т.е. в круглых скобках. Если оно истинно, то выполняется код в теле опратора цикла, заключенного в фигурные скобки. В противном случае код не выполняется. При выполнении кода(завершении первой итерации) вычислительный процесс возвращается к заголовку, где снова проверяются условия.
В операторе while по сравнению с оператором for, выражение обновления записывается в теле оператора, а не в заголовке.
Рассмотрим пример.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
<script language="JavaScript">
var s=1
i=1
while(i<=15){
s=s+i
i++
}
alert(s)
alert(s=s+i)
</script>
</head>
<body>
</body>
</html>
Где,
i=1-начальное_ выражение;
i<=15-условие(записано в теле оператора while);
i++-выражение_обновления(записано в теле кода);
s=s+i-код
В окне веб-браузера это будет выглядеть ТАК.
Для продолжения управления вычислительным процессом в операторе while, также как в операторе for, можно применять операторы прерывания break и продолжения continue.
Оператор do-while(делай до тех пор, пока) представляют собой конструкцию двух операторов, используемых совместно.
do {
код
}
(условие)while
В отличие от оператора while в операторе do-while код выполняется хотя бы один раз, независимо от условия. Условие проверяется после выполнения кода. Если оно истинно, то снова выполняется код в теле оператора do. В противном случае работа оператора do-while завершается. В операторе while условие проверяется в первую очередь, до выполнения кода в теле. Если при первом обращении к оператору while условие ложно, то код не будет выполнен ни когда.
Рассмотрим пример.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
<script language="JavaScript">
var s=1;
i=1
do {
s=s+i
i++
}
while(i<=15)
alert(s)
alert(s=s+i)
</script>
</head>
<body>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
Просто данные (конечные значения) являются выражением языка. Например, число 15, одиноко стоящее в строке програмного кода, является выражением. Последовательность символов, заключенная в кавычки (например "Привет") — тоже выражение. Имя переменной еще один вариант выражения.
Запись содержащая имя переменной, за которой следуют символы операторов присваивания и некоторое значение(например, х = "Привет"), является выражением JavaScript. Запись состоящая из операндов и оператора(например, х+5), также является выражением.
Все перечисленные выше варианты выражения называются элементарными. Тогда записи, содержащие операторы и операнды в виде элементарных выражений, являются выражениями. Например, пусть имеются два элементарных выражения: х+5 и у–5, объединяющая их оператором сложения, является выражением.
Мы можем написать сложные выражения, в которых операторы различных типов могут встречаться несколько раз. Выражения с последовательностью из нескольких операторов вычисляются слева на право, но с учетом приоритета операторов.
Внимание! Среди арифметических операторов наибольшим приоритетом обладают операторы умножения и деления (в т.ч. деление по модулю). Затем следуют сложение и вычитание. Среди логических операторов наибольшим приоритетом обладает отрицание, затем следует логическое И, а наименьшим логическое ИЛИ. Операторы сравнения по приоритету выше логических операторов. Последовательность операторов с одинаковым приоритетом выполняется слева на право.
Рассмотрим пример.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
<script language="JavaScript">
s1=2+3*5;
alert(s1); //результат равен 17, а не 25
s2=2<3 || 3<1 ;
alert(s2); //результат равен true
s3=2<3 || 3<1 && false;
alert(s3); //результат равен true
s4=!2<3 * 3<1 && false;
alert(s4); //результат равен false
</script>
</head>
<body>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
Внимание! В выражениях с круглыми скобками количество открывающихся скобок должно быть равно количеству закрывающих, а общее количество круглых скобок должно быть четным числом. Если это не выполняется, то интерпретатор выдает сообщение о синтаксической ошибке.
Рассмотрим пример.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
<script language="JavaScript">
s=2+3*5
alert(s) //результат равен 17
s=(2+3)*5
alert(s) //результат равен 25
s=((2+3)+4*5)/2
alert(s) //результат равен 12.5
s=2+3+4*5/2
alert(s) //результат равен 15
</script>
</head>
<body>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
При записи кода в одну строку, выражения в блоках необходимо разделять точкой с запятой.
<script language="JavaScript">
x=1
if(!x) { a="Вы ничего не ввели"; alert(a) } else { alert("Все в порядке") }
</script>
В окне веб-браузера это будет выглядеть ТАК.