Каждое выражение JavaScript должно оканчиваться символом точки с запятой (;), обозначающим конец выражения; его отсутствие вызывает ошибку обработки Web- сценария.
Рассмотрим следующее выражение:
y = 5;
Оно аналогично первому и присваивает переменной y константу 5. Подобные выражения часто называют математическими.
Третье выражение стоит несколько особняком:
z = x * y;
Здесь мы видим все тот же оператор присваивания, присваивающий что-то переменной z. Но что? Результат вычисления произведения значений, хранящихся в переменных x и y. Вычисление произведения выполняет оператор умножения, который в JavaScript (и во многих других языках программирования) обозначается символом звездочки (*). Это арифметический оператор.
В результате выполнения приведенного ранее Web-сценария в переменной z окажется произведение значений 4 и 5 — 20.
Вот еще один пример математического выражения, на этот раз более сложного:
y = y1 * y2 + x1 * x2;
Оно вычисляется в следующем порядке:
1. Значение переменной y1 умножается на значение переменной y2.
2. Перемножаются значения переменных x1 и x2.
3. Полученные на шагах 1 и 2 произведения складываются (оператор сложения обозначается привычным нам знаком +).
4. Полученная сумма присваивается переменной y.
Но почему на шаге 2 выполняется умножение x1 на x2, а не сложение произведения
y1 и y2 с x1. Дело в том, что каждый оператор имеет приоритет — своего рода номер в очереди их выполнения. Так вот, оператор умножения имеет более высокий приоритет, чем оператор сложения, поэтому умножение всегда выполняется перед сложением.
А вот еще одно выражение:
x = x + 3;
Оно абсолютно правильно с точки зрения JavaScript, хоть и выглядит нелепым. В нем сначала выполняется сложение значения переменной x и числа 3, после чего результат сложения снова присваивается переменной x. Такие выражения встречаются в Web-сценариях довольно часто.
Типы данных JavaScript
Любая программа при своей работе оперирует некими данными: именем стилевого класса, размерами элемента Web-страницы, цветом шрифта, величиной атмосферного давления и пр. Конечно, не составляют исключения и Web-сценарии — уже первый созданный нами Web-сценарий обрабатывал какие-то данные.
JavaScript может манипулировать данными, относящимися к разным типам. Тип данных описывает их возможные значения и набор применимых к ним операций. Давайте перечислим все типы данных, с которыми мы можем столкнуться.
Строковые данные (или строки) — это последовательности букв, цифр, пробелов, знаков препинания и прочих символов, заключенные в одинарные или двойные кавычки.
Примеры строк:
"JavaScript" "1234567"
'Строковые данные — это последовательности символов.'
Строки могут иметь любую длину (определяемую количеством составляющих их символов), ограниченную лишь объемом свободной памяти компьютера. Теоретически существует предел в 2 Гбайт, но вряд ли в нашей практике встретятся столь длинные строки.
Кроме букв, цифр и знаков препинания, строки могут содержать специальные символы, служащие для особых целей (табл. 14.1).
Таблица 14.1. Специальные символы, поддерживаемые JavaScript, и их коды
Таким образом, если нам требуется поместить в строку двойные кавычки, нужно записать ее так:
"\"Этот фрагмент текста\" помещен в кавычки"
Числовые данные (или числа) — это обычные числа, над которыми можно производить арифметические действия, извлекать из них квадратный корень и вычислять тригонометрические функции. Числа могут быть как целыми, так и дробными; в последнем случае целая и дробная части разделяются точкой (не запятой!).
Примеры чисел:
13756
454.7873
0.5635
Дробные числа могут быть записаны в экспоненциальной форме:
<мантисса>E<порядок>.
Вот примеры чисел, заданных таким образом (в скобках дано традиционное математическое представление):
1E-5 (10–5)
8.546E23 (8,546 1023)
Также имеется возможность записи целых чисел в восьмеричном и шестнадцатеричном виде. Восьмеричные числа записываются с нулем в начале (например, 047 или -012543624), а шестнадцатеричные — с символами 0x, также помещенными в начало (например, 0x35F). Отметим, что в JavaScript так можно записывать только целые числа.
Логическая величина может принимать только два значения: true и false — "истина" и "ложь", — обозначаемые соответственно ключевыми словами true и false. (Ключевое слово — это слово, имеющее в языке программирования особое значение.) Логические величины используются, как правило, в условных выражениях (о них речь пойдет позже).
JavaScript также поддерживает три специальных типа. Тип null может принимать единственное значение null и применяется в особых случаях. Тип NaN также может принимать единственное значение NaN и обозначает числовое значение, не являющееся числом (например, математическую бесконечность). Тип undefined указывает на то, что переменной не было присвоено никакое значение, и, опять же, принимает единственное значение undefined.
ВНИМАНИЕ!
undefined — это не то же самое, что null!
Еще два типа данных, поддерживаемые JavaScript и не описанные здесь, мы рассмотрим позже.
Переменные
В начале этой главы мы кое-что узнали о переменных. Сейчас настало время обсудить их детальнее.
Именование переменных
Как мы уже знаем, каждая переменная должна иметь имя, которое однозначно ее идентифицирует. Об именах переменных стоит поговорить подробнее.
Прежде всего, в имени переменной могут присутствовать только латинские буквы, цифры и символы подчеркивания (_), причем первый символ имени должен быть либо буквой, либо символом подчеркивания. Например, pageAddress, _link, userName — правильные имена переменных, а 678vasya и Имя пользователя — неправильные.
Язык JavaScript чувствителен к регистру символов, которыми набраны имена переменных. Это значит, что pageaddress и pageAddress — разные переменные.
Совпадение имени переменной с ключевым словом языка JavaScript не допускается.
Объявление переменных
Перед использованием переменной в коде Web-сценария рекомендуется выполнить ее объявление. Для этого служит оператор объявления переменной var, после которого указывают имя переменной:
var x;
Теперь объявленной переменной можно присвоить какое-либо значение:
x = 1234;
и использовать в Web-сценарии:
y = x * 2 + 10;
Значение переменной также можно присвоить прямо при ее объявлении:
var x = 1234;
Также можно объявить сразу несколько переменных:
var x, y, textColor = "black";
Вообще, объявлять переменные с помощью оператора var не обязательно. Мы можем просто присвоить переменной какое-либо значение, и JavaScript сам ее создаст. Просто явное объявление переменных оператором var считается хорошим стилем программирования.
Переменная, созданная в каком-либо Web-сценарии, будет доступна во всех остальных Web-сценариях, присутствующих в данной Web-странице. Об исключениях из этого правила мы поговорим потом.
ВНИМАНИЕ!
Если обратиться к еще не созданной переменной, она вернет значение undefined.
Пока закончим с переменными. (Впоследствии, при рассмотрении функций, мы к ним еще вернемся.) И займемся операторами JavaScript.
Операторы
Операторов язык JavaScript поддерживает очень много — на все случаи жизни. Их можно разделить на несколько групп.
Арифметические операторы
Арифметические операторы служат для выполнения арифметических действий над числами. Все арифметические операторы, поддерживаемые JavaScript, перечислены в табл. 14.2.
Таблица 14.2. Арифметические операторы
Арифметические операторы делятся на две группы: унарные и бинарные. Унарные операторы выполняются над одним операндом; к ним относятся операторы смены знака, инкремента и декремента. Унарный оператор