Если браузер не может определить тип данных, то он присваивает им значение undefined (неопределяемый).
Переменные
Переменная – это имя, присваиваемое ячейке памяти компьютера, которая хранит определенные данные во время работы сценария. Переменные есть в каждом языке программирования, даже в низкоуровневом языке Ассемблер. Они облегчают программисту работу по манипулированию с данными.
Имя переменной является идентификатором, поэтому подчиняется тем же правилам.
Объявление переменныхОбъявление переменной означает, что вы даете команду зарезервировать место для хранения данных, при этом указанный идентификатор будет использоваться в качестве имени переменной. Чтобы объявить переменную, надо после ключевого слова var указать ее идентификатор. Можно сразу объявить несколько переменных, задав их имена через запятую.
Рассмотрим примеры объявлений переменных:
var myData1;
var x,y,z;
var k, msg1, msg2, IM;
В процессе объявления переменную можно проинициализировать, то есть установить для нее начальное значение:
var myStr="Здравствуйте, ";
var k=1000, x=12, y=-5;
var s=1.34e–5, msg11="Error", Flag=false;
Пока переменная не получит значение, она не определена – undefined. Чтобы определить тип переменной, можно использовать операцию typeof, которая возвращает строку с типом переменной (листинг 11.5).
Листинг 11.5. Типы данных<html>
<head>
<title>Типы данных</title>
</head>
<body>
<h2>Типы данных</h2>
<pre>
<script>
//Объявляем переменные
var i=45.78, msg="Строка";
var f=false, y;
//Выводим типы переменных
document.write("\n"+"Переменная i="+i+" – "+ typeof(i)+"\n");
document.write("Переменная msg="+msg+" – "+ typeof(msg)+"\n");
document.write("Переменная f="+f+" – "+ typeof(f)+"\n");
document.write("Переменная y ="+y+" – "+ typeof(y)+"\n");
//Инициализируем переменную y
y=null;
document.write("А теперь переменная y="+y+" – "+ typeof(y)+"\n");
</script>
</pre>
</body>
</html>
В вышеприведенном коде для вывода информации используется метод document. write(), который позволяет дописывать строку текста прямо в страницу (рис. 11.7).
Рис. 11.7. Типы данных
Для вывода текста, значений переменных и их типа аргументом данного метода выступает довольно сложное выражение. Более подробно выражения будут рассмотрены далее в этой главе.
Совет
Язык JavaScript относится к числу языков, слабо контролирующих типы данных, поэтому одна переменная может в ходе работы сценария принимать значения различных типов. Однако такого следует избегать, так как это может привести к трудноуловимым ошибкам и усложнить понимание кода.
Область действия переменныхПеременные могут быть глобальными и локальными. Понятие области действия переменных тесно связано с функциями, которые являются отдельными блоками кода. Переменная, объявленная внутри функции, является локальной, и только эта функция имеет доступ к ее значению. Локальные переменные создаются и уничтожаются вместе с соответствующей функцией. Глобальные переменные должны объявляться вне функций. Такие переменные позволяют функциям обмениваться данными.
Массивы
Массив – это особая переменная, позволяющая хранить сразу несколько значений. Обычно эти значения связаны между собой, например массив может содержать названия месяцев. Массивы могут существенно упростить код и при использовании циклов снизить трудоемкость разработки сценария.
Рассмотрим пример объявления и задания значений элементов массива (листинг 11.6).
Листинг 11.6. Работа с массивом<html>
<head>
<title>Работа с массивом</title>
<script>
//Объявляем массив с 5 элементами
var stars= new Array(5);
//Задание значений элементам массива
stars[0]='Сириус';
stars[1]=' Канопус';
stars[2]=' Арктур';
stars[3]=' Капелла';
stars[4]=' Вега';
//Вывод первого элемента массива
alert(stars[0]);
//Вывод всех элементов массива
alert(stars);
</script>
</head>
<body>
</body>
</html>
Обратите внимание, что при объявлении массива количество элементов указывается в круглых скобках, а при обращении к элементу его индекс указывается в квадратных скобках. Кроме того, в языке JavaScript нумерация элементов массива начинается с нуля, поэтому первый элемент массива – stars[0].
Язык JavaScript позволяет не перечислять все элементы по одному, а сразу вывести все элементы массива. Для этого необходимо обратиться к самому массиву, в результате чего получится строка, в которой все элементы массива перечислены через запятую (рис. 11.8).
Рис. 11.8. Вывод всех элементов массива
Значения элементов массива можно задать при его объявлении, тогда не нужно указывать количество элементов в массиве (листинг 11.7).
Листинг 11.7. Инициализация массива<html>
<head>
<title>Инициализация массива</title>
<script>
//Объявляем массив и инициализируем значения элементов
var stars= new Array('Сириус',' Канопус',' Арктур',' Капелла',' Вега');
//Вывод первого элемента массива
alert(stars[0]);
//Вывод всех элементов массива
alert(stars);
</script>
</head>
<body>
</body>
</html>
Размерность массива можно не указывать, так как язык JavaScript этого не требует. Таким образом, можно постепенно расширять массив по мере добавления данных. Более того, можно объявить элемент с индексом n, что увеличит длину массива до n+1. Узнать длину массива можно с помощью свойства length (листинг 11.8).
Листинг 11.8. Размер массива<html>
<head>
<title>Размер массива</title>
<script>
//Объявляем массив и инициализируем значения элементов
var stars= new Array('Сириус',' Канопус',' Арктур',' Капелла',' Вега');
stars[99]='Ригель';//Создаем 100-й элемент
//Вывод размера массива
alert(stars.length);
</script>
</head>
<body>
</body>
</html>
Несмотря на то что фактически элементов в массиве шесть, длина массива равна 100 (рис. 11.9).
Рис. 11.9. Размер массива
11.3. Выражения
Выражения являются комбинациями операндов с помощью операций. Обычно в качестве операндов выступают значения и переменные, но могут выступать и другие выражения. Например, выражение 4 + 6 складывает два значения, в результате чего получается значение 10. А выражение q=5 присваивает переменной q значение 5. Если манипуляции производятся с одной величиной, то операция называется унарной, а если с двумя, то бинарной. Рассмотрим операции в JavaScript.
Операции присвоения
Одной из часто используемых операций является операция присвоения. В простейшем случае эта операция присваивает значение переменной:
a=7
Она может одновременно использоваться для нескольких переменных:
msg1=msg2="Привет"
Остальные операции присваивания являются комбинацией операции присваивания и арифметической или поразрядной операции (табл. 11.6 и 11.7).
Таблица 11.6. Комбинация с арифметическими операциямиТаблица 11.7. Комбинация с поразрядными операциямиАрифметические операции
Для работы с числами используют арифметические операции.
• Сложение – знак плюс (+). Например, 5 + 7 = 12.
• Вычитание – знак минус (-). Например, 67 – 43 = 24.
• Умножение – звездочка (*). Например, 2 * 2 = 4.
• Деление – косая черта (/). Например, 45 / 5 = 9.
• Остаток от деления – процент (%). Например, 7 % 5 = 2.
В программировании очень часто встречаются операции увеличения или уменьшения переменной на единицу, которые называются операциями инкремента и декремента. Для обозначения инкремента используется последовательность ++, а для обозначения декремента – последовательность —. Например, i++ является альтернативой выражению i=i + 1. Различают префиксную и постфиксную форму этих операций. В случае префиксной операции сначала выполняется инкремент или декремент, а затем вычисляется выражение:
i = 4
++i * 2 = 10
Если же используется постфиксная операция, то сначала вычисляется выражение, а затем производится увеличение или уменьшение переменной:
i = 4
i++ * 2 = 8
Помимо инкремента и декремента, есть еще две унарные арифметические операции: унарный плюс и унарный минус. Унарный минус изменяет знак числа, а унарный плюс преобразует операнд в число.
В листинге 11.9 демонстрируется работа с арифметическими операциями.
Листинг 11.9. Арифметические операции<html>
<head>
<title>Арифметические операции</title>
</head>
<body>
<h2>Арифметические операции </h2>