Чтение онлайн

на главную - закладки

Жанры

HTML: Популярный самоучитель
Шрифт:

В отличие от простых операторов, составной оператор может содержать в себе любое количество простых или вложенных операторов. Составной оператор задается (часто называемый блоком) при помощи скобок {}. Внутри этих скобок помещаются простые или вложенные составные операторы. Составные операторы используются, если нужно поместить несколько операторов, но ожидается присутствие только одного. В качестве примера рассмотрим оператор if (то, как работает этот оператор, описано далее). В теле оператора if ожидается наличие только одного оператора, выполняющего какое-либо действие, например:

if (a == 1) a++;

Что же делать, если нужно

выполнить последовательность более чем из одного оператора? Ответ: применить составной оператор так, как это сделано ниже:

if (a == 1) {

a++;

//Другие действия...

}

12.5. Операторы языка JavaScript

Арифметические операторы. Инкремент и декремент

В языке JavaScript присутствуют стандартные для языков программирования арифметические операторы, позволяющие производить вычисления с численными и строковыми значениями (для строк только оператор +).

К арифметическим операторам JavaScript относятся: + (сложение), – (вычитание), * (умножение), / (деление). В дополнение к ним присутствует оператор взятия остатка от деления %. Все указанные операторы являются бинарными (в том смысле, что принимают два значения и возвращают одно). Кроме указанных операторов, существует еще и унарный оператор –, инвертирующий значение аргумента (например –123, –val).

В JavaScript предусмотрена также удобная возможность записи выражений вида i = i + 1, i = i – 1, i = i * j и пр., где i – произвольная переменная, а j – произвольное выражение. Первые два выражения сокращенно записываются как инкремент и декремент: i++ и i–. Третье выражение и подобные ему можно сократить, применив следующие операторы:

• оператор –=, то есть i = i – j эквивалентно i –= j;

• оператор +=, то есть i = i + j эквивалентно i += j;

• оператор *=, то есть i = i * j эквивалентно i *= j;

• оператор /=, то есть i = i / j эквивалентно i /= j;

• оператор %=, то есть i = i % j эквивалентно i %= j.

Кроме того, предусмотрены соответствующие операторы &=, ^=, |= для двоичных операторов и <<=, >>=, >>>= для операторов сдвига.

Логические операторы и операторы сравнения

И логические операторы, и операторы сравнения возвращают результат – логическое значение true или false. Однако логические операторы принимают аргументы логического типа, в то время как операторы сравнения сравнивают значения произвольного типа. И логические операторы, и операторы сравнения языка JavaScript приведены в табл. 12.3.

Таблица 12.3. Логические операторы и операторы сравнения

Двоичные операторы

Двоичные операторы применяют при необходимости осуществления операций над численными (обычно целыми) значениями на уровне их битового представления. Здесь не рассматривается подробно, как представлены числа в памяти компьютера, а описываются только операторы.

Итак, двоичных операторов в JavaScript семь. Эти операторы перечислены в табл. 12.4.

Таблица 12.4.
Двоичные операторы JavaScript

Приоритет операторов

Все операторы, которые могут быть использованы в выражениях, имеют свой приоритет, который учитывается при определении очередности вычисления значений подвыражений. Ниже приведен список операторов согласно их приоритету (от наивысшего к самому низкому).

1. ++, –, – (унарный), ~, !, typeof.

2. *, /, %.

3. +, -.

4. <<, >>, >>>.

5. >, >=, <, <=.

6. ==, !=, ===.

7. &.

8. ^.

9. |.

10. &&.

11. ||.

12. =, +=, –=, *=, /=, %=, &=, |=, ^=.

Несмотря на приоритет операторов, очередность вычисления подвыражений может быть изменена использованием скобок любой вложенности. Выражение, заключенное в скобки, всегда вычисляется раньше других на том же уровне вложенности.

Условные операторы

При программировании на JavaScript можно использовать три условных оператора: if, select и оператор ? (именно вопросительный знак). Последний из операторов является самым простым, поэтому рассмотрим его в первую очередь.

Оператор ? используется как сокращенная версия оператора if при необходимости рассчитать значение одного из двух выражений в зависимости от истинности или ложности условия. Оператор имеет следующий формат:

условие ? выражение1 : выражение2

Здесь условие – логическое выражение (результат true или false). Выражение1 вычисляется в случае истинности выражения условие, иначе вычисляется значение выражения выражение2. Оператор ? возвращает значение (подобно любому другому оператору, например = или *), равное значению вычисленного выражения. Ниже приведено несколько примеров использования оператора ? (для большей наглядности выражения часто заключают в скобки):

a = (b > 3) ? b : 3; //Значение переменной a будет не меньше 3

a = (text == "continue") ? (a+=2) : a;

Следующим рассмотрим оператор if, который позволяет выбрать выполнение одной из двух последовательностей операторов в зависимости от истинности или ложности выражения-условия. Оператор if имеет следующий формат:

if (условие) оператор1

else оператор2

Если значение выражения условие равно true, то выполняется оператор1 (это может быть как простой, так и составной оператор), в противном случае выполняется оператор2 (также или простой, или составной оператор). Часть else оператор2 является необязательной. Ниже приведено несколько примеров использования оператора if:

if (b != 0) a /= b; //Проверяется отсутствие деления на ноль

else {

//Какие-то действия по информированию (в данном случае ничего)

}

if (a > 12)

if (a<25); //Действия при 12 < a < 25

else; //Действия при a > 25

В приведенном примере проиллюстрирована одна проблема, с которой часто сталкиваются начинающие программисты на C-подобных языках. Здесь специально проставлены отступы так, чтобы проиллюстрировать тот факт, что ключевое слово else относится к последнему по порядку оператору if. Если бы использовался блок, то принадлежность else была бы очевидной:

Поделиться:
Популярные книги

Час дракона

Зайцев Михаил Георгиевич
1. Русский ниндзя
Детективы:
боевики
8.11
рейтинг книги
Час дракона

Земля Злого Духа

Прозоров Александр Дмитриевич
1. Драконы Севера
Фантастика:
историческое фэнтези
7.44
рейтинг книги
Земля Злого Духа

Великий князь

Кулаков Алексей Иванович
2. Рюрикова кровь
Фантастика:
альтернативная история
8.47
рейтинг книги
Великий князь

Егерь. Сердце стаи. Книга 5

Скиба Николай
5. Зверолов
Фантастика:
рпг
фэнтези
фантастика: прочее
попаданцы
6.80
рейтинг книги
Егерь. Сердце стаи. Книга 5

Под-Московье

Калинкина Анна
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
Под-Московье

Иудейская война

Фейхтвангер Лион
Проза:
классическая проза
8.08
рейтинг книги
Иудейская война

Ты боишься темноты?

Шелдон Сидни
Детективы:
триллеры
8.69
рейтинг книги
Ты боишься темноты?

Вяземская катастрофа

Лопуховский Лев Николаевич
Малоизвестные страницы истории
Документальная литература:
биографии и мемуары
военная документалистика
5.50
рейтинг книги
Вяземская катастрофа

Деяние XII

Виноградов Павел Владимирович
Приключения:
прочие приключения
5.00
рейтинг книги
Деяние XII

Изменяющий-Механик. Компиляция. Книги 1-18

Усманов Хайдарали
Собрание сочинений
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Изменяющий-Механик. Компиляция. Книги 1-18

Доктор. Заново

Афанасьев Семён
1. Доктор
Фантастика:
фэнтези
альтернативная история
5.86
рейтинг книги
Доктор. Заново

Лотэр

Коул Кресли
12. Бессмертные с приходом темноты
Любовные романы:
любовно-фантастические романы
эро литература
9.29
рейтинг книги
Лотэр

Искушение

Джеймс Питер
Top Thriller
Детективы:
триллеры
7.40
рейтинг книги
Искушение

Теплица (сборник)

Олдисс Брайан Уилсон
Фантастика:
научная фантастика
5.00
рейтинг книги
Теплица (сборник)