Microsoft JScript поддерживает несколько типов циклов: цикл for, цикл for…in, цикл while, цикл do…while. Рассмотрим каждый из них подробнее.
В общем случае оператор цикла forимеет три раздела (инициализация, условие и итерация) и записывается следующим образом:
for ([ инициализация ;] [ условие ;] [ итерация ]){
тело цикла
}
В разделе инициализации обычно выполняется присваивание начальных значений переменным цикла. Здесь можно объявлять новые переменные с помощью ключевого слова var.
Во втором разделе задается условие выхода из цикла. Это условие оценивается каждый раз при прохождении цикла. Если в результате такой оценки получается логическое значение true, то начинают выполняться строки из тела цикла; в противном случае происходит выход из цикла. В том случае, когда условие было ложным с самого начала (при первой проверке), цикл не будет выполнен ни разу.
Раздел итерации применяется для изменения значений переменных цикла (например, увеличения или уменьшения значения счетчика цикла).
Пример использования цикла forприведен в листинге П1.1.
Листинг П1.1. Пример использования цикла for
var howFar = 11; // Верхний предел для счетчика цикла
var sum = new Array(howFar); //Массив из 11 элементов, индексы от 0 до 10
var theSum = 0;
sum[0] = 0;
//Цикл выполнится 10 раз
for(var icount = 1; icount < howFar; icount++) {
theSum += icount;
sum [icount] = theSum;
}
var newSum = 0;
//Цикл не выполнится ни разу
for(var icount = 1; icount > howFar; icount++) {
newSum += icount;
}
var sum = 0;
//Бесконечный цикл
for(var icount = 1; icount > 0; icount++) {
sum += icount;
}
Оператор цикла for…inпредназначен для просмотра всех свойств объекта. Для каждого свойства указанный цикл выполняет операторы, содержащиеся в теле цикла:
for ( переменная in объект ) {
тело цикла
}
Цикл for…inможно использовать для вывода на экран всех свойств объекта в одном цикле:
function objectDisplay(obj) {
var displayLine;
for (var prop in obj) {
displayLine=obj.name+"."+prop+"="+obj[prop];
WScript.Echo(displayLine)
}
WScript.Echo("--------------");
}
Цикл whileпохож на цикл for. В нем также условие выхода из цикла проверяется перед выполнением итерации, однако в цикле while, в отличие от for, нет встроенного счетчика и выражения, его изменяющего.
Оператор whileзаписывается в следующем виде:
while ( условие ) {
тело цикла
}
Пример использования цикла whileприведен в листинге П1.2.
Листинг П1.2. Пример использования цикла while
var theMoments = "";
var theCount = 42; // Начальное значение счетчика цикла
while (theCount >= 1) {
if (theCount > 1) {
theMoments = "До взрыва осталось " + theCount + " сек!";
} else {
theMoments = "Осталась секунда!";
}
theCount--; // Уменьшаем значение счетчика
}
theMoments = "ВЗРЫВ!";
Этот цикл является примером цикла с пост-условием и записывается в следующем виде:
do {
тело цикла
} while ( условие );
В этом случае цикл выполняется до тех пор, пока проверяемое после ключевого слова whileусловие не станет ложным ( false). Так как условие проверяется уже после прохождения тела цикла, то операторы внутри цикла do…whileвыполнятся по крайней мере один раз.
Пример использования цикла do…whileприведен в листинге П1.3.
Листинг П1.3. Пример использования цикла do…while
var howFar = 11; // Верхний предел для счетчика цикла
var sum = new Array(howFar); //Массив из 11 элементов, индексы от 0 до 10
var theSum = 0;
sum[0] = 0;
var icount - 1;
//Цикл выполнится 10 раз
do {
theSum += icount; sum [icount] = theSum;
icount++; }
while (icount < howFar);
Внутри цикла любого вида можно применять два специальных оператора: breakи continue.
С помощью оператора breakможно прервать выполнение цикла в любом месте; управление при этом передастся на оператор, следующий сразу за циклом.
var i = 0;
while (i < 100) {
if (i == 50) break;
i++;
Читать дальше