执行环境
函数都会创建的执行环境,包括 变量对象,作用域链,上下文(this)。执行环境定义了变量或函数有权访问的其他数据。
变量对象(VO)
存储被定义在执行环境中的变量
变量对象内容包括:
- 函数的形参
- var声明的变量
- 函数声明(不包括函数表达式)
全局环境中的变量对象
是全局对象自己
全局对象在进入任何执行环境之前就已经创建了的对象
函数环境的变量对象
是活动对象(AO),在进入函数执行环境中被创建,它通过函数的arguments属性初始化
作用域链
- 一个执行环境的数据(变量、函数声明和函数形参)作为属性存储在变量对象中。
- 同时也知道,变量对象在每次进入环境时创建,并填入初始值,值的更新出现在代码执行阶段。
代码在一个环境中执行的时候,会创建变量对象的一个作用域链,作用域链的用途是保证对变量和函数的有序访问。
本质:是一个指向变量对象的指针列表,它只引用但不实际包含变量对象。
一个作用域链包括父级变量对象(作用域链的顶部)、函数自身变量和活动对象
当查找标识符的时候,会从作用域链的活动对象部分开始查找,然后(如果标识符没有在活动对象中找到)查找作用域链的顶部,循环往复,就像作用域链那样。
参考
http://www.cnblogs.com/TomXu/archive/2012/01/16/2309728.html