con*_*att 6 javascript ecma262 ecmascript-5
有人可以澄清这两者之间的区别,因为它们存在于执行环境中吗?我很难阅读ECMA 262 v 5规范并清楚地看到差异.
谢谢,
两者都是执行上下文的组件(相同类型),但它们用于不同的目的(来自规范):
LexicalEnvironment
标识
Lexical Environment用于解析此执行上下文中的代码所做的标识符引用.
VariableEnvironment
标识
Lexical Environment其环境记录包含由此执行上下文中的VariableStatements和FunctionDeclarations创建的绑定.
下一段解释了为什么它们需要不同:
创建执行上下文时,其LexicalEnvironment和VariableEnvironment组件最初具有相同的值.在执行上下文中执行代码期间,LexicalEnvironment组件的值可能会更改,VariableEnvironment组件的值永远不会更改.
这种情况不会经常发生,通常都是指相同的Lexical Environment.在为什么catch子句有自己的词汇环境的问题中给出了改变LexicalEnvironment的一个很好的例子?- 见§12.14.我可以在规范中找到的另一个地方是With Statements(§12.10),其中a Object Environment Record动态地用于标识符解析 - 但变量/函数声明是静态的.
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |