- •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.14.2. Логические ошибки
Логические ошибки — это ошибки в логике работы программы, которые можно выявить только по результатам работы скрипта. Как правило, интерпретатор не предупреждает о наличии ошибки, и программа будет выполняться, так как не содержит синтаксических ошибок. Такие ошибки достаточно трудно выявить и исправить.
Предположим, необходимо вывести первые три элемента массива. Программист, забыв, что индексация массивов начинается с нуля, пишет следующий
код:
<SCRIPT language="JavaScript">
<!--
var m_Mass1;
m_Mass1 = [1, 2, 3, 4];
for (i=1; i<4; i++) document.write(m_Mass1[i]+ "<BR>");
//-->
</SCRIPT>
В итоге возникает логическая ошибка, так как будут получены не первые элементы массива, а три элемента начиная со второго. Так как в данном примере нет синтаксических ошибок, интерпретатор сочтет код правильным.
3.14.3. Ошибки времени выполнения
Ошибки времени выполнения — это ошибки, которые возникают во время работы скрипта. Причиной являются события, не предусмотренные программистом. Классическим примером служит деление на Ноль.
3.15. Встроенные классы JavaScript
Класс — это тип объекта, включающий в себя переменные и функции для управления этими переменными. Переменные называют свойствами, а функции – методами.
3.15.1. Основные понятия
Для использования методов и свойств класса чаще всего необходимо создать экземпляр класса. Для этого используется оператор new, после которого указывается имя класса, к которому будет относиться данный экземпляр. После имени класса, в круглых скобках, можно передавать некоторые параметры задавая таким образом начальные значения свойствам класса:
<Экземпляр класса> = new <Имя класса> ([<Параметры>]);
При создании экземпляра класса ссылка (указатель) сохраняется в переменной. Используя ссылку, можно обращаться к свойствам и методам созданного экземпляра класса.
При обращении к свойствам используется следующий формат:
<Экземпляр класса>.<Имя свойства>;
Обращение к методам осуществляется аналогично, только после имени метода необходимо указать круглые скобки:
<Экземпляр класса>.<Имя метода>();
В скобках часто указываются параметры метода.
3.15.2. Класс Global
Использование свойств и методов класса Global не требует создания экземпляра класса. Свойства и методы данного класса являются встроенными функциями JavaScript.
Свойства:
-
NaN содержит значение NaN (Not a Number, нет числа):
var m_x = NaN;
-
Infinity возвращает значение "плюс бесконечность":
var m_x = Infinity;
Методы:
parseint(<Строка>, [<Основание>]) преобразует строку в целое число системы счисления, заданной основанием. Если основание не указано, то по умолчанию используется десятичная система. Если строка не может быть преобразована в число, возвращается значение NaN. Например:
var m_Number = 15;
var m_Str = "5";
var m_Str5 = "FF";
var m_Str2 = m_Number - parseInt(m_Str); // Переменная содержит число 10
var m_Str3 = m_Number - parseInt(m_Str5, 16);
// Переменная содержит число -240
var m_Str4 = m_Number + parseInt(m_Str); // Переменная содержит число 20
parseFloat (<Строка>) преобразует строку в число с плавающей точкой:
var m_Str = "5.2";
var m_Str2 = parseFloat(m_Str); // Переменная содержит число 5.2
eval (<Строка>) вычисляет выражение в строке, как если бы это было обычное выражение JavaScript:
var m_Str = "3 + 5";
var m_Str2 = eval(m_Str); // Переменная содержит число 8
isNaN (<выражение>) проверяет, является ли выражение правильным числом. Возвращает true, если значение выражения равно NaN, и false, если выражение возвращает число;
isFinite(<выражение>) проверяет, является ли выражение конечным числом. Возвращает true или false;
escape <<строка>) кодирует строку шестнадцатеричными кодами:
var m_Str = escape("Привет");
// m_Str = %u041F%u0440%u0438%u0432%u0435%u0442
unescape(<cтрокa>) декодирует строку, закодированную методом escape():
var m_Str = unescape("%u041F%u0440%u0438%u0432%u0435%u0442");
// m_Str = Привет