ECMAScript | Записи среды

Запись Среды (Environment Record) — это тип спецификации, используемый для определения ассоциации идентификаторов Identifiers с конкретными переменными и функциями на основе лексической структуры вложенности кода ECMAScript. Обычно Запись Среды связана с определенной синтаксической структурой кода ECMAScript, такой как:

Каждый раз, когда такой код оценивается, создается новая запись среды для записи привязок идентификаторов, которые создаются этим кодом.

Каждая Запись Среды имеет поле [[OuterEnv]], которое либо равно null, либо является ссылкой на внешнюю Запись Среды. Это используется для моделирования логической вложенности значений Записи Среды. Внешняя ссылка записи среды (внутренней) — это ссылка на Запись Среды, которая логически окружает внутреннюю запись среды. Внешняя Запись Среды, конечно, может иметь свою собственную Внешнюю Запись Среды. Запись Среды может служить внешней средой для множества внутренних записей среды.

Например, если FunctionDeclaration содержит две вложенные FunctionDeclaration, тогда Записи Среды каждой из вложенных функций будут иметь в качестве своей внешней записи среды запись среды текущей оценки окружающей функции.

Записи Среды — это чисто механизмы спецификации и не обязательно должны соответствовать какому-либо конкретному артефакту реализации ECMAScript. Программа на ECMAScript не может напрямую обращаться к таким значениям или манипулировать ими.

Дополнительно

Для лучшего понимания Записи Среды рекомендую изучить:

Иерархия типов записей среды:

Операции для работы с записями среды:

  • GetIdentifierReference ( env, name, strict )
  • NewDeclarativeEnvironment ( E )
  • NewObjectEnvironment ( O, W, E )
  • NewFunctionEnvironment ( F, newTarget )
  • NewGlobalEnvironment ( G, thisValue )
  • NewModuleEnvironment ( E )

Информационные ссылки

Следующий раздел — ECMAScript | Иерархия типов записей среды

Стандарт ECMAScript — Раздел «9.1 Environment Records» — https://tc39.es/ecma262/#sec-environment-records

Поделись записью