- •1. Основные понятия
- •3.4.2. Окно с сообщением и кнопками ok и Cancel
- •3.4.3. Окно с полем ввода и кнопками ok и Cancel
- •3.6. Типы данных и инициализация переменных. Определение типа данных переменной
- •3.7. Операторы JavaScript
- •3.7.1. Математические операторы
- •3.7.2. Операторы присваивания
- •3.7.3. Двоичные операторы
- •3.7.4. Оператор обработки строк
- •3.8. Преобразование типов данных
- •3.9. Специальные символы. Разбиение сообщения в диалоговом окне на несколько строк
- •3.10. Массивы
- •3.11. Функции. Разделение программы на фрагменты
- •3.11.1. Основные понятия
- •3.11.2. Расположение функций внутри html-документа
- •3.11.3. Рекурсия. Вычисление факториала
- •3.11.4. Глобальные и локальные переменные
- •3.12. Условные операторы. Выполнение блоков кода только при соответствии условию
- •3.12.1. Операторы сравнения
- •3.12.2. Оператор ветвления if...Else. Проверка ввода пользователя
- •3.12.3. Оператор ? Проверка числа на четность
- •3.12.4. Оператор выбора switch
- •3.13. Операторы циклов. Многократное выполнение блока кода
- •3.13.1. Цикл for
- •3.13.2. Цикл while
- •3.13.3. Цикл do...While
- •3.13.4. Оператор continue.
- •3.13.5. Оператор break. Прерывание цикла
- •3.14. Ошибки в программе
- •3.14.1. Синтаксические ошибки
- •3.14.2. Логические ошибки
- •3.14.3. Ошибки времени выполнения
- •3.15. Встроенные классы JavaScript
- •3.15.1. Основные понятия
- •3.15.2. Класс Global
- •3.15.3. Класс Number. Работа с числами
- •3.15.4. Класс String. Обработка строк
- •3.15.5. Класс Array. Работа с массивами и их сортировка
- •Многомерные массивы
- •Ассоциативные массивы. Перебор ассоциативных массивов
- •3.15.6. Класс Math. Использование математических функций
- •3.15.7. Класс Date. Получение текущей даты и времени. Вывод даты и времени в окне Web-браузера
3.12.3. Оператор ? Проверка числа на четность
Оператор ? имеет следующий формат:
<Переменная> = (<Лог. выражение>) ? <если Истина> : <если Ложь>;
Перепишем нашу программу (листинг 3.18) и используем оператор ? вместо
if...else (ЛИСТИНГ 3.19).
Листинг 3.19. Проверка числа на четность с помощью оператора ?
<HTML>
<HEAD>
<TITLE>Проверка числа на четность</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--
var m_Var1;
m_Var1=window.prompt("Введите число", "");
if (m_Var1==null) {
document.write("Вы нажали Отмена");
}
else {
m_Var2=((parseInt(m_Var1))%2==0) ? "Четное число" : "Нечетное число";
document.write(m_Var2);
}
//-->
</SCRIPT>
</BODY>
</HTML>
3.12.4. Оператор выбора switch
Оператор выбора switch имеет следующий формат:
switch (<Переменная или выражение>) {
case <Значение 1>:
<Выражение 1>;
break;
case <Значение 2>:
<Выражение 2>;
break;
...
default:
<Выражение>;
}
Перепишем нашу программу и используем оператор 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.