Типы данных 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. Арифметические операторы
Арифметические операторы делятся на две группы: унарные и бинарные. Унарные операторы выполняются над одним операндом; к ним относятся операторы смены знака, инкремента и декремента. Унарный оператор извлекает из переменной значение, изменяет его и снова помещает в ту же переменную. Приведем пример выражения с унарным оператором:
++r;
При выполнении этого выражения в переменной r окажется ее значение, увеличенное на единицу. А если записать вот так:
s = ++r;
то значение r, увеличенное на единицу, будет помещено еще и в переменную s.
Операторы инкремента и декремента можно ставить как перед операндом, так и после него. Если оператор инкремента стоит перед операндом, то значение операнда сначала увеличивается на единицу, а уже потом используется в дальнейших вычислениях. Если же оператор инкремента стоит после операнда, то его значение сначала вычисляется, а уже потом увеличивается на единицу. Точно так же ведет себя оператор декремента.
Бинарные операторы всегда имеют два операнда и помещают результат в третью переменную. Вот примеры выражений с бинарными операторами:
l = r * 3.14;
f = e / 2;
x = x + t / 3;
Оператор объединения строк
Оператор объединения строк + позволяет соединить две строки в одну. Например, сценарий:
s1 = "Java";
s2 = "Script";
s = s1 + s2;
поместит в переменную s строку JavaScript.
Операторы присваивания
Оператор присваивания = нам уже знаком. Его еще называют оператором простого присваивания, поскольку он просто присваивает переменной новое значение:
a = 2;
b = c = 3;
Второе выражение в приведенном примере выполняет присвоение значения 3 сразу двум переменным — b и c.
JavaScript также поддерживает операторы сложного присваивания, позволяющие выполнять присваивание одновременно с другой операцией:
a = a + b;
a += b;
Два этих выражения эквивалентны по результату. Просто во втором указан оператор сложного присваивания +=.
Все операторы сложного присваивания, поддерживаемые JavaScript, и их эквиваленты приведены в табл. 14.3.
Таблица 14.3. Операторы сложного присваивания
Операторы сравнения
Операторы сравнения сравнивают два операнда согласно определенному условию и выдают (или, как говорят программисты, возвращают) логическое значение. Если условие сравнения выполняется, возвращается значение true, если не выполняется — false.