一些应该掌握的知识点
作用域,即scope属性,是指对某一变量和方法具有访问权限的代码空间,其中存取了执行期上下文
每个JS函数都是一个对象,其中有的属性可供我们访问,有的属性仅供JS引擎存取,例如[[scope]]就是其一
当函数执行时,会创建一个被称为”执行期上下文”的内部对象,即AO
一个AO定义了一个函数执行的环境,函数每次执行时对应的执行期上下文都是独一无二的
当函数执行完毕时,AO会被销毁
作用域链的定义:即scope中所存储的的执行期上下文对象的集合,这个集合呈链式链接,我们把这种链式链接叫做作用域链
JS引擎在查找变量时,会从作用域链的顶端依次往下找
关于JavaScript作用域详细解析的一篇博客参考:mr zl:JS函数作用域及作用域链理解