- •Лекция № 2
- •Введение
- •1. Основные синтаксические и семантические правила
- •1.1. Общая структура программы и данных
- •1.2. Типы данных, их организация в памяти и литералы
- •1.3. Ввод и вывод значений
- •1.4. Литералы значений
- •Литералы целых чисел
- •Литералы вещественных чисел
- •Перевод чисел в системы с другим основанием
- •Строковые литералы
- •Литералы массивов
- •Литералы объектов
- •1.5. Операции и выражения
- •Арифметические операции
- •Строковые операции
- •Операции сравнения
- •Компонентные операции
- •Операции присваивания
- •Другие операции
- •Синтаксис и семантика выражений
- •1.6. Дополнительные понятия и правила синтаксиса Ограничения на идентификаторы
- •Комментарии
- •Лексемы, пробельные символы и комментарии
- •2. Регулярные структуры данных
- •2.1. Многомерные массивы
- •2.2. Рекурсивные структуры объектов
- •Деревья
Литералы объектов
Литерал объекта– это заключённый в фигурные скобки список парсвойство:выражение, разделённых запятымиСвойствоуказывается своим именем, а егозначениемстановится значение указанного после двоеточия выражения. Вообще, значением свойства может бытьлюбое значение(в том числе иundefined). Порядок свойств в литерале не существенен. Можно создавать и пустой литерал –{}, чтобы потом определить в нём свойства и их значения. Как и у массивов, два одинаковых литерала объекта создают два разных объекта с одинаковыми свойствами и их значениями, но с разными ссылками.
Формальный синтаксис:
ЛитералОбъекта→ {Свойства}
Свойства→ Идентификатор:Выражение ,Свойства
Пример: литерал
{num: "F12C75",
person: {family:"Иванов", name:"Иван"},
age: Age,
cats: ["Рыжик", "Толстый", "Жу-Жу"]}
представляет структуру данных «Член общества любителей кошек». Его значения и смысл свойств перечислены в таблице.
Свойство |
Значение |
Смысл |
num |
Строка F12C75 |
Регистрационный номер |
person |
Ссылка на объект, изображённый литералом {family:"Иванов",name:"Иван"} |
Фамилия и имя (удобно объединить их в одну запись) |
age |
Значение переменной Age. Если переменная не была определена, то выдаётся ошибка |
Возраст лица |
cats |
Массив из трёх элементов. |
Список его котов |
Вместо имён котов, можно было включить три объекта с информацией о котах.
На рис. 2.10 изображено представление этой структуры в памяти.
Рисунок 2.10. Представление в памяти сложной записи.
1.5. Операции и выражения
Операции– это некоторые базовые, простейшие функции, которые, будучи применены к своим операндам, выдают некоторый результат9.Операндыирезультатоперации – это значения определённых типов. По количеству операндов операции в языкеJavaScriptделятся на унарные (с одним операндом), бинарные (с двумя операндами) и тернарные (одна операция с тремя операндами.
Обозначение операции называется знакомоперации или простооперацией, тем более это обозначение часто состоит из нескольких знаков и даже слов. Унарная операция называетсяпрефиксной, если она записывается перед своим операндом, ипостфиксной, если она записывается после операнда.
В программировании очень важно знать, для каких типов операндов применима данная операция и каков будет тип её результата. В JavaScript, если операция неприменима к данным значениям, она выдаётundefined, или Infinity или NaN.
Рассмотрим следующие группы операций языка JavaScript, выделяя их по типу данных, с которыми они работают:
арифметические (+ - * / %),
строковые (+),
сравнения (== === != !== < > <= >=),
логические (! || &&),
компонентные ([] .),
присваивания (= += -= *= /= %= ++ --),
другие операции (?: typeof new).
Арифметические операции
Операция |
Результат |
Примеры |
число + число |
Сумма чисел |
|
число – число |
Разность чисел |
|
число * число |
Произведение чисел |
|
число / число |
Точное частное от деления |
5/3 даст 1.66…67 |
число % число |
Остаток от деления целых чисел |
5%3 даст 2 |
+ число |
То же число |
|
- число |
То же число, но с противоположным знаком |
|
Операция сложения вычисляет сумму только тогда, когда значения операндов являются числами, или логическими значениями, или null(которые преобразуются в числа 1 или 0). В противном случае она исполняется, как конкатенация строк (если это возможно, см. ниже). Остальные арифметические операции значения операндов, не являющиеся числами, пытаютсяпривестик числам по определённым правилам. Например, строка"123"и массивы[123]и["123"]приводится к числу 123. Правила приведения очень сложны, и мы их не приводим, так как считаем, что лучше, по возможности, избегать подобных ситуаций.
Арифметические операции всегда выдают числовые значения (кроме операции +, когда она трактуется как строковая операция). При получении в результате слишком большого (по абсолютной величине) числа или при делении на 0 операции выдают значение Infinityили-Infinity(бесконечность). При делении 0 на 0 или при невозможности привести операнды к числам выдаётся значениеNaN(«не число»).InfinityиNaNтакже считаются числовыми значениями.