函数作用域

来源:互联网 发布:网络交易管理办法2017 编辑:程序博客网 时间:2024/05/16 16:09

函数创建阶段

就是创建了一个函数对象,这个对象是Function的实例。创建完成之后,内部属性[[Scope]]被初始化,上面富含了该函数作用域链的信息。在此阶段这个属性的初始位置被指代为全局对象。

函数执行阶段

该阶段,先创建执行上下文(对象)。进行初始化操作,按照函数定义中的标记符出现的位置创建活动对象,对于函数中未出现的对象,尝试从当前对象[[Scope]]上一层找,找到后复制一个引用,没有就是直接undef。这里隐含了一层意思,就是任何function实例其实创建完之后作用域顶层只有一层指向全局,不论它在任何位置

活动对象创建完毕后,推到当前function对象[[Scope]]属性的前端。函数按照执行语句的顺序开始执行。

执行完成

执行完成后,执行上下文对象销毁,活动对象也被一起销毁(从[[Scope]]对象上被拿走)等待垃圾回收。

详见《高性能JS》P18

原创粉丝点击