
- •Основы языка JavaScript.
- •Возможности языка
- •Семантика и синтаксис
- •Структура языка
- •Объектная модель браузера
- •Объектная модель документа
- •Основной синтаксис
- •1.1Обзор
- •1.2Числа
- •1.3Строки
- •1.4Другие типы
- •1.5Переменные
- •1.6Операторы
- •1.7Управляющие структуры
- •1.8Объекты
- •1.9Массивы
- •1.10Функции
- •1.11Пользовательские объекты
- •1.12Внутренние функции
- •1.13Встраивание в веб-страницы
- •1.14Расположение внутри тега
- •1.15Отделение от разметки
- •1.16Вынесение в отдельный файл
- •1.17Атрибуты тега script
- •1.18Область применения
- •Браузерные операционные системы
- •Пользовательские скрипты в браузере
- •Серверные приложения
- •Мобильные приложения
- •Виджеты
- •Прикладное программное обеспечение
- •Манипуляция объектами приложений
- •Офисные приложения
- •1.19Библиотеки JavaScript
- •1.20Поддержка браузерами
- •1.21Безопасность
- •Межсайтовые уязвимости
- •Ошибки в браузере, плагинах и расширениях
- •Ошибки реализации песочницы
- •Краткие итоги
- •Задание на практическую работу
Объектная модель документа
Объектная модель документа – интерфейс программирования приложений для HTML и XML-документов. Согласно DOM документу можно поставить в соответствие дерево объектов, обладающих рядом свойств, которые позволяют производить с ним различные манипуляции:
получение узлов;
изменение узлов;
изменение связей между узлами;
удаление узлов.
Основной синтаксис
1.1Обзор
В JavaScript определены следующие типы:
Number ;
String ;
Boolean ;
Object:
Function ;
Array ;
Date ;
RegExp ;
Null ;
Undefined ;
Error.
1.2Числа
Все числа в JavaScript согласно спецификации "64-битные двойной точности – формат IEEE 754". В JavaScript нет типа Integer, что может привести к неожиданным последствиям, например:
0.1 + 0.2 = 0.30000000000000004
Поддержаны стандартные арифметические операторы, такие как сложение, деление, остаток от деления и так далее. Здесь стоит вспомнить встроенный объект Math содержащий математические методы:
Math.sin(3.5);
d = Math.PI * r * r;
С использованием встроенной функции parseInt() можно преобразовать строку в число. Вторым параметром эта функция принимает базу, которую стоит всегда указывать во избежание казусов:
parseInt("123", 10) //результат – "123"
parseInt("010", 10) //результат – "10"
а если не указать базу то получим:
parseInt("010") //результат – "8"
Это произошло, потому что parseInt посчитало число восьмеричным из-за предшествующего 0.
Если функция не может преобразовать строку в число, она возвращает специальное значение NaN (сокращение от "Не Число"):
parseInt("Привет", 10) //результат – "NaN"
Результатом математической операции с NaN всегда будет NaN:
NaN + 5 //результат – "NaN"
Можно проверить значение на равенство NaN переменной с помощью встроенной функции isNaN():
isNaN(NaN) //результат – "true"
В JavaScript есть также значения Infinity и -Infinity:
1 / 0 //результат – "Infinity"
-1 / 0 //результат – "-Infinity"
1.3Строки
Strings в JavaScript это последовательность символов. Для представления одного символа можно использовать строку единичной длины. Для получения длины строки и объектов есть свойство length:
"Привет".length //результат – "5"
Также строка имеет набор полезных методов:
"Привет".charAt(0) //результат – "П"
"Привет, мир!".replace("Привет", "Прощай") //результат – "Прощай, мир!"
"Привет".toUpperCase() //результат – "ПРИВЕТ"
1.4Другие типы
JavaScript различает специальный тип и одноименное примитивное значение null – явное (программно-установленное) пустое значения, и значение undefined типа "undefined", которое говорит о том, что значение еще не было назначено:
typeof null //результат – "object"
typeof undefined //результат – "undefined"
В JavaScript можно объявить переменную не инициализируя ее. В этом случае значение переменной будет равно undefined.
В JavaScript есть логический тип с возможными значениями true и false (оба являются ключевыми словами в JavaScript ). Любое значение может быть преобразовано к логическому в согласии со следующими правилами:
false, 0, пустая строка ( "" ), NaN, null, и undefined трактуются как false ;
все остальное как true.
Преобразование можно провести в явном виде с использованием функции Boolean():
Boolean("") //результат – "false"
Boolean(234) //результат – "true"
Эта возможность используется достаточно редко, поскольку такое преобразование производится автоматически в тех случаях, когда ожидается логическое значение, как в выражении if. Поэтому обычно просто говорят о "истинных значениях" и "ложных значениях", подразумевая, в какое из логических значений оно преобразуется.
Поддерживаются стандартные логические операторы && (логическое и ), || (логическое или ) и ! (логическое не ).