js每个函数都有一个对象,对象中有属性可以访问,但有些属性不能访问,例如【【scope】】就不能访问,它就是作用域,存储了运行期上下文的集合。
作用域链:scope中存储了执行期上下文对象的集合,这个集合呈链式链接,把这个链式链接叫做作用域链。
在哪个函数查找变量时,就在这个作用域链的顶端开始查找。
第一步:函数a的定义 a.scope – 0 :GO
第二步:函数a的执行 a.scope – 0:aAO 1:GO
第三步:函数b的定义 b.scope – 0:aAO 1:GO
第四步:函数b的执行 b.scope – 0:bAO 1:aAO 2:GO
第五步:函数c的定义 c.scope – 0:bAO 1:aAO 2:GO
第六步:函数c的执行 c.scope – 0:cAO 1:bAO 2:aAO 3:GO