Список
Тип Список (List) используется для объяснения оценки списков аргументов (раздел 13.3.8) в выражениях new
, в вызовах функций и в других алгоритмах, где необходим простой упорядоченный список значений.
Значения типа Список (List) — это просто упорядоченные последовательности элементов списка, содержащие отдельные значения. Эти последовательности могут быть любой длины. К элементам списка можно произвольно обращаться с использованием индексов с нулевым происхождением. Для удобства записи можно использовать синтаксис, подобный массиву, для доступа к элементам списка. Например, arguments[2] — это сокращение для обозначения 3-го элемента списка arguments.
Когда алгоритм перебирает элементы списка без указания порядка, используемый порядок — это порядок элементов в Списке.
Для удобства записи в этой спецификации можно использовать буквальный (литеральный) синтаксис для выражения нового значения Списка (List). Например, «1, 2» определяет значение Списка, состоящее из двух элементов, каждый из которых инициализируется определенным значением. Новый пустой список можно обозначить как «».
В этой спецификации фраза «конкатенация списка A, B, …» (где каждый аргумент является, возможно, пустым списком) обозначает новое значение списка, элементы которого представляют собой конкатенацию элементов (по порядку) каждого из аргументов (по порядку).
Запись
Тип Запись (Record) используется для описания агрегирования данных в алгоритмах данной спецификации.
Значение типа Записи (Record) состоит из одного или нескольких именованных полей. Значение каждого поля — это либо значение ECMAScript, либо абстрактное значение, представленное именем, связанным с типом Записи. Имена полей всегда заключаются в двойные скобки, например [[Value]].
Для удобства записи в этой спецификации синтаксис, подобный объектному литералу, может использоваться для выражения значения Записи. Например, { [[Field1]]: 42, [[Field2]]: false, [[Field3]]: empty } определяет значение Записи, которое имеет три поля, каждое из которых инициализируется определенным значением. Порядок имен полей не имеет значения. Любые поля, которые явно не указаны, считаются отсутствующими.
В тексте спецификации и алгоритмах точечная нотация может использоваться для обозначения определенного поля значения Записи. Например, если R — это запись, показанная в предыдущем абзаце, тогда R.[[Field2]] — это сокращение для «поля R с именем [[Field2]]».
Схема для часто используемых комбинаций полей записи может быть названа, и это имя может использоваться в качестве префикса к буквальному (литеральному) значению Записи, чтобы идентифицировать конкретный тип описываемых агрегатов. Например: PropertyDescriptor {[[Value]]: 42, [[Writable]]: false, [[Configurable]]: true}.
Информационные ссылки
Стандарт ECMAScript — Раздел «6.2.1 The List and Record Specification Types» — https://tc39.es/ecma262/#sec-list-and-record-specification-type