Я читаю спецификацию ECMAScript 2015, и термины "LexicalEnvironment" и "VariableEnvironment" используются много раз. Они определены в таблице 23:
LexicalEnvironment: определяет лексическую среду, используемую для разрешения ссылок на идентификаторы, созданных кодом в этом контексте выполнения.
VariableEnvironment: определяет лексическую среду, среда EnvironmentRecord которой содержит привязки, созданные переменными элементами в этом контексте выполнения.
Компоненты LexicalEnvironment и VariableEnvironment контекста выполнения всегда являются лексическими средами. Когда создается контекст выполнения, его компоненты LexicalEnvironment и VariableEnvironment изначально имеют одинаковое значение.
Итак, я хочу знать, как они будут отличаться, и в каких ситуациях каждый из них используется. Может ли кто-нибудь объяснить?