Управление порядком выполнения
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

• Операторные скобки

l {...}

• Ветвление

l if (условие) инструкция;

l if (условие) инструкция; else инструкция;

l Нелогические значения 0, "", null, undefined и NaN считаются ложью, всё остальное – истиной

• Цикл с предусловием

l while(условие) инструкция;

• Цикл с постусловием

l do { ... } while(условие);

• Итерационный цикл

l for(инициализация; условие; действие) инструкция;

• Цикл по элементам

l for(переменная in объект) инструкция;

• Прерывание блока

l break;

l break имяМетки ;

• Переход на следующую итерацию

l continue;

l continue имяМетки;

• Возврат из метода или обработчика

l return;

l return значение ;

• Блок переключателей

l switch (выражение) {
case значение: инструкции;
...
default : инструкции}

l Для сравнения используется строгое равенство

l Можно работать со строками

l Предложений caseможет быть много

l Для прерывания используется break

l Есть предложение default




Функции

• Объявлениефункции (function declaration)
function имя ( парамр 1, ... параметр N) {
телофункции
}

• Формальные и фактические параметры различаются

• Внутри функции объявление переменных с var даёт локальные переменные

• Функции создаются предварительно, до выполнения кода

writeLine(" Итого :");

writeLine(745);

function writeLine(line) {

document.write(line);

document.write("<br/>");

}

• Функции – это объекты, у которых есть имя и значение, и которые можно передавать в функции

writeLine ( writeLine );

/* Будет выведено следующее:

function writeLine(line) { document.write(line); document.write("<br/>"); }

* /

• Функция-выражение (function expression)
function(параметр1, ..., параметрN) {
тело функции
}

l Полученную функцию можно присвоить в переменную.

l Функции создаются не заранее, а когда до них доходит выполнение.

l Условное объявление функций (переменная объявляется заранее, реализация – потом).

l Лучше такой формой не злоупотреблять.

• Можно вызывать функции, полученные в качестве объектов, и передавать им параметры







Пример 35.

function showResult(a, b, calculator) {

document.write(" Операнд 1: " + a + "<br/>");

document.write(" Операнд 2: " + b + "<br/>");

document.write(" Результат : " + calculator(a, b) + "<br/>");

}

function sum(a, b) {

return a + b;

}

showResult(5, 7, sum);//

showResult(8, 3, function (a, b) { return a - b; });

Объекты

• Являются по сути ассоциированными массивами (картами, map)

l ключи – имена свойств (только строки)

l значения – значения свойств (любые типы, включая функции)

• Доступ к свойствам

l ссылка.имяСвойства

l ссылка["имяСвойства"]

• Свойства добавляются и исключаются динамически.

• Переменные хранят ссылки на объекты.

• Свойства объектов являются переменными.

Пример 36. Операции со свойствами

varemployee = {}; // Создание пустого объекта

employee . name = " King "; // Добавление свойств

employee.salary = 5000;

document.write(employee.name + ": " + employee.salary); // Чтениесвойств

delete employee.salary // Удалениесвойства

for (p in employee) { // Ещёодночтениесвойств

document.write(typeof(p) + " " + p + " " + employee[p]);

}

/* Будетвыведено

King: 5000

string name King

/*

// Литеральное создание объекта

varrectangle = {

width : 200,

height: 300,

getArea: function() { return this.width * this.height; }

}; // this в методах при обращении к свойствам обязателен!!!

// Изменениесвойств

rectangle.width = rectangle.height = 5;

rectangle.getPerimeter = function() {

return 2 * (this.width + this.height);

};

// Проверкаработы

document.write(rectangle.getArea() + "<br/>");

document.write(rectangle.getPerimeter() + "<br/>");

Функции-конструкторы

• Конструкторами объектов являются функции

l Их принято называть с большой буквы

l Вызываются с помощью new

l Могут иметь параметры

l Формируют объект, используя слово this

l Возвращают ссылку на созданный объект

Пример 37 .

function Employee(name, salary) {

this.name = name;

this.salary = salary;

this.fired = false;

}

var king = new Employee("King", "5000");

Встроенные объекты

• Конструкторы

l Math

l Date

l RegExp

l Function

l Array

l ...

• «Обёртки»

l String

l Number

l Boolean

Наследование

• Базовым является не наследование классов, а наследование объектов.

• Родительский объект называется прототипом.

• Механизмы наследования заметно отличаются от классического ООП с классами.

• Можно эмулировать почти что классические классы со всеми их возможностями и проблемами.

Обработка исключений

• Обработка исключений

try {
// код, потенциально выбрасывающий исключения
}
catch ( e ) {
// код обработки ошибки
}
finally {
// код, всегда выполняющийся в конце
}

• Блока catch или finally может не быть.

• Для непользовательских методов ошибка обычно «имеет тип» Error, свойства которого могут отличаться в зависимости от браузера.









Выбрасывание исключений

• Метод вправе выбросить своё исключение
throw ссылкаНаОбъектИсключения;

• Можно выбросить вообще любой объект
throw 12345;

• Но лучше выбрасывать что-нибудь вразумительное
throw {name: "OhShit!", message: "Ohhhh"}
throw new Error("Oooops!");





Пример 38. Смена контекста

Смена текущего объекта

var employee = {name: "King", salary: 5000};

with (employee) {

document.write(name + ": " + salary);

}

Дата: 2019-02-19, просмотров: 256.