Условные операторы
Обновлен: Ноябрь 2007
По умолчанию инструкции кода JScript выполняются последовательно. Однако иногда бывает полезно изменять логическую последовательность и в зависимости от определенных условий передавать управление другим частям кода. Структура управления передает управление программой одной из двух частей кода в зависимости от значения, которое возвращает условный оператор: "true" или "false". В качестве условного оператора можно использовать любое выражение, которое может быть приведено к типу "Boolean". В данном разделе приводятся некоторые наиболее распространенные условные операторы.
Равенство и строгое равенство
Оператор равенства (==) в условном операторе проверяет, имеют ли два переданных ему аргумента одинаковое значение. При необходимости для выполнения сравнения оператор выполняет преобразование типов. Оператор строгого равенства (===) сравнивает и значение, и тип двух выражений; значение "true" возвращается только в том случае, если у двух операндов совпадают значения и тип данных. Обратите внимание, что оператор строгого равенства не делает различия между разными числовыми типами данных.
В следующем коде JScript оператор равенства объединен с использующем его оператором if. Дополнительные сведения см. в разделе Управляющие структуры.
function is2000(x) : String {
// Check if the value of x can be converted to 2000.
if (x == 2000) {
// Check is the value of x is strictly equal to 2000.
if(x === 2000)
print("The argument is number 2000.");
else
print("The argument can be converted to 2000.");
} else {
print("The argument is not 2000.");
}
}
// Check several values to see if they are 2000.
print("Check the number 2000.");
is2000(2000);
print("Check the string \"2000\".");
is2000("2000")
print("Check the number 2001.");
is2000(2001);
В результате выполнения этого кода выводятся следующие данные:
Check the number 2000.
The argument is number 2000.
Check the string "2000".
The argument can be converted to 2000.
Check the number 2001.
The argument is not 2000.
Неравенство и строгое неравенство
Оператор неравенства (!=) возвращает результат, противоположный оператору равенства. Если операнды имеют одинаковые значения, оператор неравенства возвращает значение false; в противном случае возвращается значение true. Аналогичным образом, оператор строгого неравенства (!==) возвращает результат, противоположный результату оператора строгого равенства.
Рассмотрим следующий пример кода JScript, в котором оператор неравенства используется для управления циклом while. Дополнительные сведения см. в разделе Управляющие структуры.
var counter = 1;
// Loop over the print statement while counter is not equal to 5.
while (counter != 5) {
print(counter++);
}
В результате выполнения этого кода выводятся следующие данные:
1
2
3
4
Сравнение
Операторы равенства и неравенства полезно использовать, если фрагменты данных имеют определенное значение. Однако в некоторых ситуациях в коде необходимо проверить, находится ли значение в пределах определенного диапазона. В таких случаях удобно использовать операторы отношения — меньше (<), больше (>), меньше или равно (<=) и больше или равно (>=).
if(tempInCelsius < 0)
print("Water is frozen.")
else if(tempInCelsius > 100)
print("Water is vapor.");
else
print("Water is liquid.);
Сокращенные вычисления
Если необходимо одновременно проверить несколько условий и известно, что одно из них выполняется или не выполняется с большей вероятностью, чем другие, можно использовать функцию, называемую сокращенным вычислением, которая позволит ускорить выполнения сценария и избежать побочных эффектов, способных привести к ошибкам. При вычислении логического выражения код JScript вычисляет ровно столько подвыражений, сколько необходимо для получения результата.
Оператор логического И (&&) сначала вычисляет переданное ему левое выражение. Если в результате вычисления этого выражения возвращается значение false, то результатом оператора логического И не может быть значение true независимо от значение правого выражения. Поэтому правое выражение не вычисляется.
Например, в выражении ((x == 123) && (y == 42)) код JScript сначала проверяет, равно ли значение x 123. Если это не так, проверка значения y не выполняется и код JScript возвращает значение false.
Подобным образом оператор логического ИЛИ (||) сначала вычисляет левое выражение, и, если в результате возвращается значение true, правое выражение не вычисляется.
Сокращенные вычисления удобно использовать в том случае, если в состав проверяемых условий входит выполнение вызовов функций или других сложных выражений. Чтобы повысить эффективность сценария, помещайте в левую часть оператора логического ИЛИ условия, которые с наибольшей вероятностью возвратят значение true. В случае оператора логического И в левую часть следует помещать условия, которые, вероятнее всего, возвратят значение false.
В следующем примере демонстрируются преимущества использования в сценарии сокращенных вычислений. В этом примере функция runsecond() не будет выполняться, если проверка значения runfirst() возвращает значение true.
if ((runfirst() == 0) || (runsecond() == 0)) {
// some code
}
В следующем примере также демонстрируются преимущества использования в сценарии сокращенных вычислений. Здесь функция runsecond() не будет выполняться, если проверка значения runfirst() возвращает значение false.
if ((x == 0) && (y/x == 5)) {
// some code
}
Прочее
В качестве условного оператора можно использовать любое выражение, которое может быть приведено к типу "Boolean". К примеру, можно использовать такое выражение:
if (x = y + z) // This may not do what you expect - see below!
Обратите внимание, что приведенный выше код не проверяет равенство значения x значению y + z, поскольку в синтаксисе использован одинарный знак равенства (знак присвоения). Вместо этого этот код присваивает значение y + z переменной x, а затем проверяет, можно ли преобразовать результат всего выражения (то есть значение x) к значению true. Для проверки равенства значения x значению y + z используйте следующий код.
if (x == y + z) // This is different from the code above!