Андрей Попов - Windows Script Host для Windows 2000/XP
Также РІ условных операторах применяются логические операторы (табл. Рџ1.8).В
Таблица П1.8. Логические операторы
Оператор Описание || Оператор отношения "РР›Р". Возвращает true, если РѕРґРёРЅ РёР· операндов равен true. Р’ противном случае возвращает false && Оператор отношения "Р". Возвращает true, если РѕР±Р° операнда равны true. Р’ противном случае возвращает falseУсловные операторыВ
В JScript поддерживается условный оператор if…else. Общий вид этого оператора показан ниже:
if (условие) выражение_1
[else выражение_2]
При выполнении оператора if…else оценивается логическое условие, заданное в круглых скобках после ключевого слова if. Если в результате оценки условия получилось значение true, то выполняется первое выражение. В противном случае выполняется второе выражение (если оно присутствует).
Оператор if…else может быть вложенным. Заметим, что если в первом или втором выражении нужно расположить несколько операторов, то их следует выделить фигурными скобками:
if (С… == 5) {
В if (Сѓ == 6) z = 17;
} else z = 20;
В JScript также существует специальный тип условного оператора, который называется оператором "?:". В общем виде он записывается так:
условие ? выражение_1 : выражение_2
При вычислении оператора "?:" вначале оценивается условие, расположенное в левой части. Если оно равно true, то выполняется первое выражение, в противном случае — второе. Например:
hours += (theHour >=12) ? " Р Рњ" : " AM";В
Операторы цикловВ
Microsoft JScript поддерживает несколько типов циклов: цикл for, цикл for…in, цикл while, цикл do…while. Рассмотрим каждый из них подробнее.
Цикл for
В общем случае оператор цикла for имеет три раздела (инициализация, условие и итерация) и записывается следующим образом:
for ([инициализация;] [условие;] [итерация]){
 тело цикла
}
В разделе инициализации обычно выполняется присваивание начальных значений переменным цикла. Здесь можно объявлять новые переменные с помощью ключевого слова var.
Р’Рѕ втором разделе задается условие выхода РёР· цикла. Рто условие оценивается каждый раз РїСЂРё прохождении цикла. Если РІ результате такой оценки получается логическое значение true, то начинают выполняться строки РёР· тела цикла; РІ противном случае РїСЂРѕРёСЃС…РѕРґРёС‚ выход РёР· цикла. Р’ том случае, РєРѕРіРґР° условие было ложным СЃ самого начала (РїСЂРё первой проверке), цикл РЅРµ будет выполнен РЅРё разу.
Раздел итерации применяется для изменения значений переменных цикла (например, увеличения или уменьшения значения счетчика цикла).
Пример использования цикла for приведен в листинге П1.1.
Листинг П1.1. Пример использования цикла forvar 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 объект) {
 тело цикла
}
Цикл for…in можно использовать для вывода на экран всех свойств объекта в одном цикле:
function objectDisplay(obj) {
В var displayLine;
В for (var prop in obj) {
В displayLine=obj.name+"."+prop+"="+obj[prop];
В В WScript.Echo(displayLine)
В }
В WScript.Echo("--------------");
}
Цикл while
Цикл while похож на цикл for. В нем также условие выхода из цикла проверяется перед выполнением итерации, однако в цикле while, в отличие от for, нет встроенного счетчика и выражения, его изменяющего.
Оператор while записывается в следующем виде:
while (условие) {
 тело цикла
}
Пример использования цикла while приведен в листинге П1.2.
Листинг П1.2. Пример использования цикла whilevar theMoments = "";
var theCount = 42; // Начальное значение счетчика цикла
while (theCount >= 1) {
В if (theCount > 1) {
 theMoments = "До взрыва осталось " + theCount + " сек!";
В } else {
 theMoments = "Осталась секунда!";
В }
 theCount--; // Уменьшаем значение счетчика
}
theMoments = "ВЗРЫВ!";
Цикл do…while
Ртот цикл является примером цикла СЃ РїРѕСЃС‚-условием Рё записывается РІ следующем РІРёРґРµ: