Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практические аспекты разработки веб-ресурсов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
Условные операторы
Операторы условия позволяют принять решение, по какому пути выпол­нения алгоритма следует идти вычислительному процессу в зависимости от анализируемых условий, событий, реакций и т.д. В языке JavaScript определено несколько условных операторов.
Условный оператор “?:”
Синтаксис данного оператора следующий:
<условие>?<оператор 1>:<оператор 2>;
<условие> — выражение, принимающее значение true или false. Если <условие> истинно (true), то выполняется < оператор 1>, иначе, т.е. если <усло­вие> ложно (false), выполняется <оператор 2>.
<оператор 1>,<оператор 2> — простой или составной один оператор.
Условные операторы могут быть вложенными.
Например:
var firstCheck = false,
secondCheck = false,
access = firstCheck ? «Доступ запрещен»: secondCheck ?»Доступ запре- щен»: «Доступ разрешен»;
console.log(access); // выводит в консоль «Доступ разрешен»
Условный оператор “if”
Синтаксис данного оператора в полной форме следующий:
if <условие> < оператор 1> else < оператор 2>;
<условие> — выражение, принимающее значение true или false. Если <условие> истинно (true), то выполняется < оператор 1>, иначе, т.е. если <усло­вие> ложно (false), выполняется < оператор 2>.
<оператор 1>,<оператор 2> — простой или составной один оператор.
Условные операторы могут быть вложенными.
Например:
if (n==1){console.log (“Поступило одно сообщение”);}
else {console.log (“Поступило ”+n+” сообщений”);}
71
Синтаксис данного оператора в неполной форме следующий:
if <условие> < оператор 1>;
<условие> — выражение, принимающее значение true или false. Если <условие> истинно (true), то выполняется < оператор 1>, иначе, т.е. если <усло­вие> ложно (false), выполнение данного оператора прекращается, а управление передается на следующий за оператором if оператор программы.
<оператор 1> — простой или составной один оператор.
Например:
if (username==null) username=”Иванов Иван Иванович”;
/* если имя пользователя не определено, то ему будет присвоено, указан- ное имя «Иванов Иван Иванович», иначе имя останется прежним*/
Условный оператор “switch”
Общим случаем условного оператора является оператор варианта switch.
Данный оператор дает возможность выполнять один из нескольких опе­раторов в зависимости от значения селектора.
Синтаксис данного оператора следующий:
switch(<селектор>) {
case <метка 1>:<операторы>;
[break; return]
case <метка 2>: <операторы>;
[break; return]
…..
case <метка N>: <операторы>;
[break; return]
default: <операторы>;
[break; return]
}
Если значение селектора совпало со значением какой-либо метки блоков case, то выполняется блок операторов, следующий за данной меткой. Если при
выполнении данного условия (значение селектора равно значению метки) надо прекратить вычисления, то для этого используется инструкция перехода break или инструкция перехода return (используется только в теле функции).
Если значение селектора не совпало ни с одним из значений меток, то управление передается на блок, отмеченный меткой default, для выполнения операторов этого блока. Блок default не является обязательным и может отсут­ствовать.
72
Например:
Пусть реализована функция convert(), которая преобразует значение x в строку. Способ преобразования зависит от типа значения x.
function convert(x) {
switch (typeof x) {
case number’: return x.toString(16); /* преобразование в шестнадцатирич- ное целое число*/
case string’: return “”+x+””; // Заключение в кавычки
default: return String(x); // Любой другой тип
}
}
switch(n){
case 1: break;//n==1
case 2: convert(n); break; // n==2
default: break; // иначе
}
Операторы циклов
Оператор цикла “while”
While — это оператор цикла с предусловием, предназначен для програм­мирования вычислительных процессов, когда число повторений заранее не из­вестно и действия, предусмотренные в цикле, могут вообще не выполняться. Его синтаксис следующий:
while (<условие>){
<оператор 1>;
}
Логическое <условие> проверяется перед каждым выполнением <опера­тора 1>, если оно принимает значение истина (true), то выполняется <оператор 1>, если — ложь (false), то происходит выход из цикла и управление передается оператору, следующему за оператором цикла. Если условие первоначально ложно, то цикл не будет выполнен ни разу. Если условие всегда будет прини­мать значение true, то произойдет зацикливание. Следует избегать такой ситуации.
<оператор 1> — простой или составной один оператор.
73
Например:
var n = 0;
var x = 0;
while (n < 3) {
n++;
x += n;
}// В результате выполнения данного фрагмента кода n=3; x=6
Оператор цикла “do/while”
Цикл “do/while” является циклом с постусловием, предназначен для про­граммирования вычислительных процессов, когда число повторений заранее не известно. Обязательно выполнится хотя бы один раз!
Синтаксис оператора “do/while” следующий:
do {
<оператор(ы) цикла>}
while (<условие>);
Процесс завершается, когда после очередного выполнения данной после­довательности операторов логическое условие примет значение true. Управле­ние передается следующему оператору программы.
Например:
var n = 0;
var x = 0;
do{
n++;
x += n;}
while (n>=3); // В результате выполнения данного фрагмента кода n=3; x=6
Оператор цикла “for”
Оператор цикла for (цикл с параметром) предназначен для выполнения оператора заранее известное число раз. Синтаксис данного оператора:
for(<инициализация>;<проверка>;<обновление>) {
<оператор 1>;
}
<инициализация> — указывается переменная с начальным значением, ко­торая называется счетчик циклов. Значение ей может быть присвоено здесь же посредством операции присвоения, или путем ее объявления с присвоением начального значения (var i=1).
74
<проверка> — логическое условие, которое проверяется перед каждой итерацией цикла, если оно истинное, то цикл выполняется снова, иначе (если оно ложное) выполнение цикла завершается и управление передается следую­щему оператору программного кода.
<обновление> — указывает шаг изменения индекса (положительный, от­рицательный) Выполняется после выполнения операторов цикла for.
<оператор 1> — простой или составной один оператор.
Например:
var n;
for (n=1; n=<3;n++) {
x += n;
}
Инструкции переходов в JavaScript
Инструкции переходов позволяют интерпретатору JavaScript осуществ­лять передачу управления в заданное инструкцией место программного кода.
Инструкция “break”
Синтаксис данной инструкции:
break [label];
[label] метка, необязательный параметр.
Инструкция break без метки позволяет немедленно прекратить выполне­ние внутреннего цикла или блока оператора switch. Если break использовался с меткой, то можно выйти из любого помеченного блока.
Инструкция “continue”
Синтаксис данной инструкции:
continue [label];
[label] метка, необязательный параметр.
Данная инструкция используется только в теле цикла: с меткой или без нее. Она служит для того, чтобы прервать выполнение текущей итерации и пе­редать управление на начало следующей итерации цикла.
В следующем примере показан цикл, в котором инструкция continue вы­полняется при i=3. В этом случае управление передается на начало цикла, при этом текущая итерация прекращается. Таким образом, n принимает значения 1,
3, 7, и 12.
75
var i = 0;
var n = 0;
while (i < 5) {
i++;
if (i === 3) {
continue;
}
n += i;
}
Инструкция “return”
Синтаксис данной инструкции:
return [<выражение, переменная, значение>];
Данная инструкция используется только в теле функции и предназначена для определения возвращаемого функцией значения. Обработка интерпретато­ром инструкции return является условием прекращения выполнения функции с передачей значения функции во внешнюю программу.
Например:
function square(x) {
return x * x;
}
y=square(2); //y=4
Инструкция “trhow”
Синтаксис данной инструкции:
throw <выражение>;
Данная инструкция позволяет в определенном месте программного кода (где возможно возникновение ошибки) задать генерацию ошибки, чтобы ее можно было в дальнейшем перехватить и обработать инструкцией catch.
Для того, чтобы ошибки генерировал интерпретатор используют класс
Error.
Объектные типы данных языка JavaScript
К объектным типам относятся:
объекты;
массивы;
функции.
76
Объекты
Объектно-ориентированная методология проектирования основана на концепциях «упрятывания» информации и абстрагирования типов данных. Та­кой подход рассматривает такие ресурсы, как данные, модули и системы, в ка­честве объектов. Каждый объект содержит некоторую структуру данных (или тип данных), обрамленную набором процедур, знающих, как манипулировать с этими данными. Используя эту методологию, разработчик может создать свой собственный абстрактный тип и отобразить проблемную область в эти создан­ные абстракции. Здесь дается возможность разработчику сконцентрироваться на проекте системы, не беспокоясь о деталях информационных объектов, ис­пользуемых в системе.
В теории программирования объектно-ориентированное проектирование (ООП) определяется как методология программирования, основанная на пред­ставлении программы в виде совокупности объектов, каждый из которых явля­ется экземпляром определенного класса (типа), а классы образуют иерархию наследования.
Объект — это структура данных, содержащая свойства (поля данных раз­личных типов) и события (методы, реализующие возможности работы с дан­ным объектом посредством его свойств).
Свойства — переменные, объявленные в данном объекте.
События (методы) — процедуры или функции, объявленные в данном объекте.
Объект — основной тип в JavaScript. Все объекты в JavaScript связаны механизмом наследования (прототипирования). Объекты в JavaScript динами­ческие: их свойства можно удалять или добавлять им свойства. Таким образом, JavaScript — динамический объектно-ориентированный язык сценариев.
Создание объектов.
Объекты можно создавать с помощью объектных литералов, конструкто­ра new и функции Object.create(). С понятием объект связано понятие прототип. Прототипом является объект, свойства которого наследует вновь создаваемый объект.
Объектный литерал это список, разделенных запятой пар «имя:значение», заключенный в фигурные скобки. Все объекты, созданные объектными литералами, имеют один и тот же прототип — Object.prototype.
77
Например:
var point1 ={x:0, y:0}; // два свойства, координаты точки x и y
var point2 ={ x:point1.x, y:point1.y+1}; /* два свойства, координаты точки x и y,
связаны с объектом point1*/
var book ={“title”:” JavaScript”,”for”,”all audiences”};
Конструктор new создает и инициирует новый объект JavaScript. Базовая библиотека JavaScript содержит встроенные конструкторы всех встроенных ти­пов. Объекты, созданные с помощью конструктора new, имеют в качестве про­тотипа свойство prototype.
Например:
var o=new Object(); // o={}
var a=new Array(); // пустой новый массив
var d=new Date(); // объект, содержащий текущее время
Функция Object.create() использует два аргумента: первый аргумент в ка­честве прототипа объекта, второй аргумент описывает свойства нового объекта.
Например:
var o1= Object.create({x:1, y:2}) // наследует свойства x и y
var o2= Object.create(null) // не наследует ни свойства, ни методы
var o3= Object.create(Object.prototype) // аналогичен new Object()
Работа со свойствами объекта.
Работа со свойствами объекта осуществляется с помощью точечной нота­ции, т.е. указывается имя объекта, а через точку свойство, которое обрабатыва­ется, или посредством квадратных скобок [ ]. Синтаксис обращения к свойству объекта следующий:
<имя объекта>.<свойство объекта> или
<имя объекта>[<свойство объекта>]
Чтение и запись свойств объекта осуществляется посредством оператора присваивания.
Например:
book.title=”HTML5 and CSS”; /* Свойству title объекта с именем book присвоено
значение HTML5 and CSS */
var title=book[“title”]; /* Переменной title присвоено начальное значение свойства title объекта с именем book */
78
Объекты в JavaScript имеют собственные свойства и наследуют свойства своих прототипов вверх по иерархии объектов. Если необходимо найти свой­ство у объекта, для которого оно не определено, то поиск указанного свойства осуществляется в прототипе объекта. Если и там его нет, то в прототипе прото­типа и т.д., до тех пор пока не будет найдено заданное свойство или прототип со свойством prototype равным null.
У объекта в JavaScript можно удалять только собственные свойства, а не унаследованные. Для этого используется оператор delete, имеющий следующий синтаксис:
delete object.property
delete object['property']
delete property /* удаляет свойства глобального объекта, или, используя инструкцию with, свойства объекта, на который ссылается инструкция */
object имя объекта или выражение, результатом вычисления которого
является объект; property — удаляемое свойство.
Возвращает false, только если свойство существует в самом объекте, а не в его прототипах, и не может быть удалено. Во всех остальных случаях возвра­щает true.
Например:
var o={x:1, y:2};
delete o.x // Из объекта o удалено свойство x
Проверить наличие того или иного свойства у объекта можно посред­ством оператора in или методов hasOwnProperty() и propertyIsEnumerable().
Синтаксис оператора in:
< свойство> in <объект>;
Данный оператор возвращает значение true, если указанное свойство при­сутствует у объекта.
Например:
var o={x:1, y:2};
“x” in o; // =true — свойство x есть у объекта o
“z” in o // =false –свойство z отсутствует у объекта o
Метод hasOwnProperty() используется для определения наличия у объекта собственного свойства с указанным именем. Синтаксис:
<имя объекта>.hasOwnProperty(<свойство>);
Возвращает значение true, если указанное свойство есть у объекта.
79
Например:
o = new Object();
o.prop = 'существует';
o.hasOwnProperty('prop'); // вернёт true
o.hasOwnProperty('toString'); // вернёт false
Метод propertyIsEnumerable() используется для определения того, являет­ся ли указанное свойство перечислимым. Если это так, то возвращается true, иначе false. Синтаксис:
<имя объекта>. propertyIsEnumerable(<свойство>);
Например:
var o={x:1, y:2};
o. propertyIsEnumerable(“x”); //=true, x является перечислимым
Атрибуты объекта.
У каждого объекта есть атрибуты прототипа, класса и расширяемости.
Атрибут прототипа — prototype, задает объект, от которого вновь созда­ваемый объект получает свойства. Этот атрибут задается при создании объекта.
Чтобы узнать родительский прототип используется метод isPrototypeOf().
Например:
var p={x:1};
var o= Object.create(p);
p.isPrototypeOf(o) // =true, o наследует свойства p
Атрибут класса — class
Атрибут расширяемости — extensible, дает возможность добавления но­вого свойства объекту. Чтобы узнать, можно ли добавить свойства объекту ис­пользуется метод Object.isExtensible(). Чтобы сделать объект не расширяемым используются методы Object.seal(), Object.preventExtensions(). Чтобы выяснить, вызывался ли метод seal(), используется метод Object.isSealed().
Массивы
Массив — это упорядоченный набор фиксированного количества компо­нент. Необходимость в массивах возникает всякий раз, когда при решении за­дачи приходится иметь дело с большим, но конечным количеством однотипных данных. Массивы бывают одномерные и многомерные, числовые и символь­ные. В Javascript(JS) массивы не типизированные, т.е. компоненты массива мо­гут иметь разные типы. Нумерация элементов массива начинается с нуля. Мас-
80
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]