Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практические аспекты разработки веб-ресурсов. Учебное пособие
.pdf
Условные операторы
Операторы условия позволяют принять решение, по какому пути выполнения алгоритма следует идти вычислительному процессу в зависимости от
анализируемых условий, событий, реакций и т.д. В языке 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
