- •Саратовский государственный технический университет
- •Введение
- •Три уровня web-документа
- •Навигация
- •Глава 1. Основы Java Script
- •Рекомендации по использованию JavaScript
- •Добавление JavaScript кода в html документы
- •Сокрытие сценариев от устаревших браузеров
- •Определение языка сценариев
- •Атрибут language
- •Атрибут defer
- •1.2. Ввод и вывод данных
- •Alert(сообщение);
- •Confirm(сообщение);
- •Вывод в тело документа
- •Практические задания
- •1.3. Типы данных и значения
- •Целые литералы
- •Шестнадцатеричные и восьмеричные литералы
- •Литералы вещественных чисел
- •Работа с числами
- •Специальные числовые значения
- •Строковые литералы
- •Управляющие последовательности в строковых литералах
- •Преобразование чисел в строки
- •Логические значения
- •Преобразование логических значений
- •Функции
- •Функциональные литералы
- •Объекты
- •Объектные литералы
- •Значение null
- •Значение undefined
- •Объекты Error
- •Преобразование типов
- •Имена переменных
- •Создание переменных
- •Var имя_переменной;
- •Типизация переменных
- •Область видимости переменной
- •Var X; // Объявляем неинициализированную переменную. Значением ее является undefined
- •Элементарные и ссылочные типы
- •Комментарии
- •Арифметические операторы
- •Операторы сравнения
- •Операторы сравнения
- •Оператор in
- •Оператор instanceof
- •Строковые операторы
- •Логические операторы
- •Присваивание с операцией
- •Условный оператор (?:)
- •Оператор typeof
- •Оператор создания объекта (new)
- •Оператор delete
- •Глава 2. Инструкции Java Script
- •Инструкция if - оператор условного перехода
- •If (условие)
- •If (условие1) {
- •If (!х) {// Если переменная username равна null, undefined, 0, "" или NaN, она
- •If (!X) alert('Bы ничего не ввели")
- •Инструкция else if
- •Инструкция switch
- •Практические задания
- •Операторы цикла
- •Инструкция while
- •Цикл do/while
- •Инструкция for
- •I f (условие2){
- •Инструкция for/in
- •Инструкция break
- •Инструкция continue
- •Практические задания
- •Инструкция var
- •Инструкция function
- •Инструкция return
- •Инструкция throw
- •Инструкция try/catch/finally
- •Инструкция with
- •Пустая инструкция
- •Глава 3 Объекты
- •Создание объектов
- •Свойства объектов
- •Объекты как ассоциативные массивы
- •Свойства и методы универсального класса Object
- •Объект String (Строка)
- •Методы String обработки строк
- •X.Split(" ") /* значение - массив из элементов: "Привет", "всем" */
- •Методы String форматирования строк
- •Функции вставки и замены подстрок
- •Insstr ("Привет, друзья", " мои", 7) // "Привет, мои друзья"
- •Insstr("Привет, друзья", " мои", 100) // "Привет, друзья мои"
- •Практическое задание
- •Массивы
- •Чтение и запись элементов массива
- •Добавление новых элементов в массив
- •Длина массива
- •Многомерные массивы
- •Методы массивов
- •Функции обработки числовых массивов
- •Практическое задание
- •Практические задания
- •Объект Date
- •Аргументы
- •Статические методы
- •Практические задания
- •Объект Math (Математика)
- •Свойства Math
- •Методы Math
- •Таймеры
- •If (confirm("Прервать процесс ?"))
- •Глава 4 Основы создания сценариев
If (!X) alert('Bы ничего не ввели")
Можно было то же самое записать иначе:
if (x == null) // Если переменная x равна null или undefined,
alert('Bы ничего не ввели")
x = "Вася"; // определяем ее
Как уже упоминалось, можно использовать сложные условия. Поэтому инструкция if может выглядеть так:
if ((address == null) || (address == "")) {
address = "undefined";
alert("Пожалуйста, укажите почтовый адрес.");
}
Отступы, присутствующие в этих примерах, не обязательны. Дополнительные пробелы и табуляции игнорируются в JavaScript. Оформление текста с использованием символов перевода строки и отступов облегчает чтение и понимание кода.
Многие программисты заключают тело инструкций if и else (а также других составных инструкций, таких как циклы while) в фигурные скобки, даже когда тело состоит только из одной инструкции. Последовательное применение этого правила поможет избежать многих ошибок и неприятностей.
Инструкция else if
Мы видели, что инструкция if/else используется для проверки условия и выполнения одного из двух фрагментов кода в зависимости от результата проверки. Но что если требуется выполнить один из многих фрагментов кода? Возможный способ сделать это состоит в применении инструкции else if. Формально это не JavaScript-инструкция, а лишь распространенный стиль программирования, состоящий в применении повторяющихся инструкций if/else:
if (n == 1) {
// Исполняем блок кода 1
}
else if (n == 2) {
// Исполняем блок кода 2
}
else if (n == 3) {
// Исполняем блок кода 3
}
else {
// Если все остальные условия else не выполняются, исполняем блок 4
}
В этом фрагменте нет ничего особенного. Это просто последовательность инструкций if, где каждая инструкция if является частью конструкции else предыдущей инструкции. Стиль else if предпочтительнее и понятнее записи в синтаксически эквивалентной форме, полностью показывающей вложенность инструкций:
if (n == 1) {
// Исполняем блок кода 1
}
else { if (n == 2) {
// Исполняем блок кода 2
}
else { if (n == 3) {
// Исполняем блок кода 3
}
else {
// Если все остальные условия else не выполняются, исполняем блок кода 4
}
}
}
Инструкция switch
Инструкция if создает ветвление в потоке исполнения программы. Сложное ветвление можно реализовать посредством нескольких инструкций if, как показано в предыдущем примере.
Однако это не всегда наилучшее решение, особенно если все ветви зависят от значения одной переменной. Инструкция switch работает именно в такой ситуации и делает это более эффективно, чем повторяющиеся инструкции if. За инструкцией switch следует выражение и блок кода – почти так же, как в инструкции if.
Различные места в блоке кода помечены ключевым словом case, за которым следует значение и символ двоеточия. Когда выполняется инструкция switch, она вычисляет значение выражения, а затем ищет метку case, соответствующую этому значению. Если метка найдена, исполняется блок кода, начиная с первой инструкции, следующей за меткой case. Если метка case с соответствующим значением не найдена, исполнение начинается с первой инструкции, следующей за специальной меткой default:. Если метки default: нет, блок кода пропускается целиком.
Следующая инструкция switch эквивалентна повторяющимся инструкциям if/else, показанным в предыдущем разделе:
switch(n) {
case 1: // Выполняется, если n == 1
// Исполняем блок кода 1.
break; // Здесь останавливаемся
case 2: // Выполняется, если n == 2
// Исполняем блок кода 2.
break; // Здесь останавливаемся
case 3: // Выполняется, если n == 3
// Исполняем блок кода 3.
break; // Здесь останавливаемся
default: // Если все остальное не подходит...
// Исполняем блок кода 4.
break; // Здесь останавливаемся
}
Обратите внимание на ключевое слово break в конце каждого блока case. Инструкция break приводит к передаче управления в конец инструкции switch или цикла. Конструкции case в инструкции switch задают только начальную точку исполняемого кода, но не задают никаких конечных точек. В случае отсутствия инструкций break инструкция switch начинает исполнение блока кода с метки case, соответствующей значению выражения, и продолжает исполнение до тех пор, пока не дойдет до конца блока, выполняя по очереди все оставшиеся ветви. В редких случаях это полезно для написания кода, который переходит от одной метки case к следующей, но в 99 % случаев следует аккуратно завершать каждый блок case инструкцией break.
switch (xlang) {
case "английский" : window. open ("engl .htm") ;
break;
case "французский": window. open ("french. htm") ;
break;
case "немецкий" : window. open ("german. htm") ;
break;
default: alert("y нас нет документа на таком языке")
}
При использовании switch внутри функции можно помещать вместо break инструкцию return. Обе эти инструкции служат для завершения работы инструкции switch и предотвращения перехода к следующей метке case.
Ниже приводится более реальный пример использования инструкции switch; он преобразует значение в строку способом, зависящим от типа значения:
function convert(x) {
switch(typeof x) {
case 'number': // Преобразуем число в шестнадцатеричное целое
return x.toString(16);
case 'string': // Возвращаем строку, заключенную в кавычки
return '"' + x + '"';
case 'boolean': // Преобразуем в TRUE или FALSE, в верхнем регистре
return x.toString().toUpperCase();
default: // Любой другой тип преобразуем обычным способом
return x.toString()
}
}
Обратите внимание: в двух предыдущих примерах за ключевыми словами case следовали числа или строковые литералы. Именно так инструкция switch чаще всего используется на практике, но стандарт ECMAScript v3 допускает указание после case произвольного выражения. Например:
case 60*60*24:
case Math.PI:
case n+1:
case a[0]:
Инструкция switch сначала вычисляет выражение после ключевого слова switch, а затем выражения case в том порядке, в котором они указаны, пока не будет найдено совпадающее значение. Факт совпадения определяется в соответствии с оператором идентичности ===, а не оператором равенства ==, поэтому выражения должны совпадать без какого-либо преобразования типов.
Как объяснялось ранее, если ни одно из выражений case не соответствует выражению switch, инструкция switch начинает выполнение с инструкции с меткой default:. Если метка default: отсутствует, инструкция switch полностью пропускается. Обратите внимание, что в предыдущих примерах метка default: указана в конце тела инструкции switch после всех меток case. Это логичное и обычное место для нее, но на самом деле она может располагаться в любом месте внутри инструкции switch.