- •Лекция № 2
- •Введение
- •1. Основные синтаксические и семантические правила
- •1.1. Общая структура программы и данных
- •1.2. Типы данных, их организация в памяти и литералы
- •1.3. Ввод и вывод значений
- •1.4. Литералы значений
- •Литералы целых чисел
- •Литералы вещественных чисел
- •Перевод чисел в системы с другим основанием
- •Строковые литералы
- •Литералы массивов
- •Литералы объектов
- •1.5. Операции и выражения
- •Арифметические операции
- •Строковые операции
- •Операции сравнения
- •Компонентные операции
- •Операции присваивания
- •Другие операции
- •Синтаксис и семантика выражений
- •1.6. Дополнительные понятия и правила синтаксиса Ограничения на идентификаторы
- •Комментарии
- •Лексемы, пробельные символы и комментарии
- •2. Регулярные структуры данных
- •2.1. Многомерные массивы
- •2.2. Рекурсивные структуры объектов
- •Деревья
Строковые литералы
В языке JavaScriptлитерал строки– это строка, взятая вкавычки("Строка") илиапострофы('Строка'), обозначающие начало и конец строки. Строка может быть пустая (литерал""или''). Литерал строки должен полностью размещаться в одной строке текста программы.
В литерале строки символ \(обратный слэш) используется не сам по себе, а для указания, как понимать следующие за ним символы. Правила его использования приведены в таблице 2.2.
Таблица 2.2.
Использование символа \ в литералах строк
Символы литерала |
Символы строки |
Примеры |
Примечания |
\" |
" |
"Яхта \"Стрела\"" – литерал строки Яхта "Стрела". Ту же строку можно было записать литералом 'Яхта "Стрела"' |
\ указывает, что следующий символ изображает сам себя как символ строки, а не играет вспомогательной роли. |
\' |
' |
'Яхта \'Стрела\'' – литерал строки Яхта 'Стрела'. Ту же строку можно было записать литералом "Яхта 'Стрела'" | |
\\ |
\ |
"Ленин \\Ульянов\\" – литерал строки Ленин \Ульянов\ | |
\xDD Здесь D – шестнадцатеричная цифра (1-9, A-F) |
Символ, шестнадцатеричный ASCII-код которого равен DD |
Символы литерала \хА9 обозначают символ строки ©. Символы литерала \хС4 обозначают символ строки Ä. |
Применяется, когда символов нет на клавиатуре. Коды символов можно получить, например, в Word’е, используя меню Вставка/Символ. |
\uDDDD Здесь D – шестнадцатеричная цифра |
Символ, шестнадцатеричный код которого в кодировке Unicode равен DDDD |
Символы литерала \u00А9 обозначают символ строки ©. Символы литерала \u00С4 обозначают символ строки Ä.
| |
\n |
Переход на новую строку |
alert('111\n222') напечатает две строки: 111 222 |
Применяются вместо ASCII-кодов символов новая строка и табуляция. |
\t |
Символ табуляции, вызывающий отступ на фиксированную позицию |
alert('i\tiii\nMMM\tMM') напечатает две строки: i iii MMM MM Применяется для отступов и таблиц. |
Формальный синтаксис:
Строка= "СимволыСтроки" │ ' СимволыСтроки'
СимволыСтроки → СимволСтроки СимволыСтроки
СимволСтроки→ Символ | Спецсимвол
Символ→ любой символ буквенно-цифровой клавиатуры и ПРОБЕЛ
Спецсимвол → \" │ \' │ \\ │ \n │ \t │ \xХХ │ \uХХХХ
Х→Цифра16
При вводе строк нельзя использовать клавиши EnterиTab.
Литералы массивов
Литерал массивасодержит в квадратных скобках перечень его элементов (в порядке индексации). Элементы задаютсявыражениями(см. ниже) и отделяются друг от друга запятой. Запятые определяют количество элементов массива, а выражения – значения элементов. Допускается отсутствие любого количества выражений («пустые места»). Тогда значения соответствующих элементов считаются неопределёнными (значениеundefined).
Например, следующий литерал
[1+2,"Чепуха!",,["1+2",],5]
изображает массив, элементы которого перечислены в таблице:
Индекс элемента |
Значение элемента |
0 |
Число 3 (значение выражения 1+2) |
1 |
Строка Чепуха! |
2 |
Значение undefined |
3 |
Массив из двух элементов, заданный литералом ["1+2",]. Его первый элемент – строка 1+2 (а не число), значение второго элемента не определено (undefined). |
4 |
Число 5 |
Формальный синтаксис:
ЛитералМассива→ [Элементы]
Элементы→ Выражение ,Элементы
Для каждого литерала массива в памяти создаётся отдельное представление. Поэтому два одинаковых литералаопределяют два массива с одинаковыми элементами, но занимающих разные места в памяти и имеющих разные ссылки. Поэтому они считаютсяразными массивами. Так, в результате выполнения операторов
x=[1,2]; y =[1,2]
создаётся два разных массива с одинаковыми элементами. Так что значения переменных xиy(ссылки на массивы) будут различны.
В результате же выполнения операторов
x=[1,2]; y=x
создаётся только один массив, и ссылка на него присваивается обеим переменным, так что обе они имеют одно и то же значение.
На рис. 2.9 изображено представление рассмотренного выше массива.
Рисунок 2.9.
Представление в памяти массива
[1+2,"Чепуха!",,["1+2",],5].