- •Саратовский государственный технический университет
- •Введение
- •Три уровня 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 Основы создания сценариев
I f (условие2){
код
break
}
код
}
Для управления вычислениями в операторе цикла можно также использовать оператор continue (продолжение). Так же, как и break, этот оператор применяется в теле оператора цикла вместе с оператором условного перехода. Однако, в отличие от break, оператор continue прекращает выполнение последующего кода, выполняет выражение обновления и возвращает вычислительный процесс в начало оператора цикла, где производится проверка условия, указанного в заголовке.
Инструкция for/in
Ключевое слово for в JavaScript также используется в инструкции for/in. Эта инструкция – несколько иной вид цикла, имеющего следующий синтаксис:
for (переменная in объект)
инструкция
Здесь переменная должна быть либо именем переменной, либо инструкцией var, объявляющей переменную, либо элементом массива, либо свойством объекта. Параметр объект – это имя объекта или выражение, результатом которого является объект.
Элементы массива можно перебирать простым увеличением индексной переменной при каждом исполнении тела цикла while или for. Инструкция for/in предоставляет средство перебора всех свойств объекта. Тело цикла for/in исполняется единожды для каждого свойства объекта. Перед исполнением тела цикла имя одного из свойств объекта присваивается переменной в виде строки. В теле цикла эту переменную можно использовать для получения значения свойства объекта с помощью оператора []. Например, следующий цикл for/in печатает имена и значения всех свойств объекта:
for (var prop in my_object) {
document.write("имя: " + prop + "; значение: " + my_object[prop], "<br>");
}
Обратите внимание: переменной в цикле for/in может быть любое выражение, если только результатом его является нечто, подходящее для левой части присваивания. Это выражение вычисляется при каждом вызове тела цикла, т. е. каждый раз оно может быть разным. Так, скопировать имена всех свойств объекта в массив можно следующим образом:
var my_arr = {x:1, y:2, z:3};
var a = new Array();
var i = 0;
for(a[i++] in my_arr) /* пустое тело цикла */;
Массивы в JavaScript – это просто специальный тип объектов. Следовательно, цикл for/in может использоваться для перебора элементов массива так же, как свойств объекта. Например, предыдущий блок кода при замене строки на приведенную ниже перечисляет «свойства» 0, 1 и 2 массива:
for(i in a) alert(i);
Цикл for/in не задает порядка, в котором свойства объекта присваиваются переменной. Нельзя заранее узнать, каким будет этот порядок, и в различных реализациях и версиях JavaScript поведение может быть разным. Если тело цикла for/in удалит свойство, которое еще не было перечислено, это свойство перечислено не будет. Если тело цикла определяет новые свойства, то будут или нет перечислены эти свойства, зависит от реализации.
Цикл for/in на самом деле не перебирает все свойства всех объектов. Так же как некоторые свойства объектов помечаются как доступные только для чтения или постоянные (не удаляемые), свойства могут помечаться как неперечислимые.
Такие свойства не перечисляются циклом for/in. Если все свойства, определенные пользователем, перечисляются, то многие встроенные свойства, включая все встроенные методы, не перечисляются. Как мы увидим далее, объекты могут наследовать свойства от других объектов. Унаследованные свойства, которые определены пользователем, также перечисляются циклом for/in.
Метки
Метки case: и default: в сочетании с инструкцией switch – это особый вариант более общего случая. Любая инструкция может быть помечена указанным перед ней именем идентификатора и двоеточием:
Идентификатор: инструкция
Здесь идентификатор может быть любым допустимым в JavaScript идентификатором, не являющимся зарезервированным словом. Имена меток отделены от имен переменных и функций, поэтому программист не должен беспокоиться о конфликте имен, если имя метки совпадает с именем переменной или функции.
Пример инструкции while с меткой:
parser:
while(token != null) {
// здесь код опущен
}
Пометив инструкцию, мы даем ей имя, по которому на нее можно ссылаться из любого места программы. Пометить можно любую инструкцию, хотя обычно помечаются только циклы while, do/while, for и for/in. Дав циклу имя, можно посредством инструкций break и continue выходить из цикла или из отдельной итерации цикла.