JS作用域与作用域链
执行期上下文分两种, 一种是Global Object(GO),一种是Activation Object(AO)。GO为全局的执行期上下文,AO为函数执行产生的独一无二的局部执行期上下文。多次调用函数会产生多个执行期上下文,函数执行完毕执行期上下文被销毁。
用上图函数做一定解释:(0、 1为执行期上下文排列顺序)
1、函数a定义==》0:GO
2、 a执行==》0:AO(a),1:GO
3、b定义==》0:AO(a),1:GO
4、b执行==》0:AO(b),1:AO(a),2:GO
5、c执行==》0:AO(b),1:AO(a),2:GO
6、c定义==》0:AO(c),1:AO(b),2:AO(a),3:GO
如此形成的执行期上下文链就是该函数的作用域链
查找变量:在哪一个函数里查找变量,就从哪一个函数的作用域链顶端开始查找
函数执行完毕后销毁自身的执行期上下文(AO)再次执行该函数就产生新的执行期上下文