Перепишем нашу программу и используем оператор switch вместо if...else и ? (листинг 3.20).
Листинг 3.20. Проверка числа на четность с помощью оператора switch
<HTML>
<HEAD>
<TITLE>Проверка числа на четность</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--
var m_Var1;
m_Var1=window.prompt("Введите число", "");
if (m_Var1==null) {
document.write("Вы нажали Отмена");
}
else {
switch ((parseInt(m_Var1))%2) {
case 0:
document.write("Четное число");
break;
case 1:
document.write("Нечетное число");
break;
default:
document.write("Введенное значение не является числом");
}
}
//-->
</SCRIPT>
</BODY>
</HTML>
Итак, оператор switch позволил сделать еще одну дополнительную проверку. Ведь пользователь вместо числа мог ввести строку. А в этом случае функция parseint () вернет значение NaN (Not a Number). Любая арифметическая операция со значением NaN вернет в качестве значения NaN. В предыдущих примерах мы не производили эту проверку, и в случае ввода строки, которую невозможно преобразовать в число, функция возвращала фразу "Нечетное число". Что, согласитесь, не верно.
Вернемся к оператору switch. Вместо логического выражения оператор switch принимает переменную или выражение. В зависимости от значения переменной (или выражения) выполняется один из блоков case, в котором указано это значение. Если ни одно из значений не описано в блоках case, то выполняется блок default. Оператор break позволяет досрочно выйти из оператора выбора switch. Зачем это нужно? Если не указать оператор break в конце блока case, то будет выполняться следующий блок case вне зависимости от указанного значения. Если убрать все операторы break из нашего примера, то в результате (при вводе четного числа) в окне Web-браузера отобразится следующая надпись:
Четное числоНечетное числоВведенное значение не является числом
Иными словами, оператор break следует обязательно указывать в конце каждого блока case.