Как правило, термин «переменная область» используется как синоним компонента LexicalEnvironment.Итак, с технической точки зрения, да, есть разница. На практике, однако, использование терминологии сильно разнится и не обязательно соответствует спецификации.
10.3 Контексты выполнения
Когда управление передается в исполняемый код ECMAScript, управление вводит выполнение контекст .Активные контексты выполнения логически образуют стек.Верхний контекст выполнения в этом логическом стеке - это контекст выполнения.Новый контекст выполнения создается всякий раз, когда управление передается из исполняемого кода, связанного с текущим выполняемым контекстом исполнения, в исполняемый код, который не связан с этим контекстом исполнения.Вновь созданный контекст выполнения помещается в стек и становится текущим контекстом выполнения.
Контекст выполнения содержит любое состояние, необходимое для отслеживания хода выполнения соответствующего кода.
...
Компоненты LexicalEnvironment и VariableEnvironment контекста выполнения всегда являются лексическими средами.Когда создается контекст выполнения, его компоненты LexicalEnvironment и VariableEnvironment изначально имеют одинаковое значение.Значение компонента VariableEnvironment никогда не изменяется, в то время как значение компонента LexicalEnvironment может изменяться во время выполнения кода в контексте выполнения.
В большинстве случаев только контекст запущенного выполнения (вершина стека контекста выполнения)непосредственно управляется алгоритмами в рамках этой спецификации.Следовательно, когда термины «LexicalEnvironment», «VariableEnvironment» и «ThisBinding» используются без оговорок, они относятся к тем компонентам контекста текущего выполнения.
...
10.3.1Разрешение идентификатора
Разрешение идентификатора - это процесс определения привязки Идентификатора с использованием LexicalEnvironment контекста текущего выполнения.Во время выполнения кода ECMAScript синтаксическая продукция PrimaryExpression : Идентификатор оценивается с использованием следующего алгоритма:
- Пусть env будетLexicalEnvironment контекста выполнения.
- Если оцениваемая синтаксическая продукция содержится в коде строгого режима, то пусть строгий будет
true
, иначе пусть строгий be false
. - Возвращает результат вызова функции GetIdentifierReference, передавая env , Идентификатор и строгий в качестве аргументов.
Результатом оценки идентификатора всегда является значение типа Reference с указанным компонентом имени, равным Identifier String.