以前学习过执行上下文内部结构的一些知识,大概的知道执行上下文内部有变量对象VO/AO、this、作用域链Scope等属性。
今天看了篇关于执行上下文的文章,文中给出了全局执行上下文和函数执行上下文的数据结构。
Global Execution Context = { global object, this: global object, outer environment: null, enviroment: { // all the identifiers variable, function expression, function declaration, }, } Execution Context = { this: some value, outer environment: outer lexcial environment, enviroment: { // all the identifiers parameter, arguments, variable, function expression, function declaration, }, }
我的疑问比较多:
eviroment对应了以前学的知识中的变量对象?外部指针对应了Scope?
按以前学的知识,只有函数的形参、函数声明、变量声明可以进入变量对象,为什么在function Execution Context中,函数表达式 function expression也进入了enviroment,说明了 enviroment不是变量对象?
3.在Global Execution Context中有global object和enviroment,按道理,全局对象就是全局变量对象,相同的东西没必要保存两份,这也证明了 enviroment 不是变量对象吧。
所以,对原文的正确性,有些存疑。
白猪掌柜的
相关分类