Поделиться через


Условные операторы

Обновлен: Ноябрь 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!

См. также

Основные понятия

Логические данные

Другие ресурсы

Условные структуры в JScript

Типы данных в JScript

Справочник по JScript

Операторы (JScript)