作用域链理解

社会主义新天地 提交于 2019-12-23 21:43:48

对于每上下文都有三个重要属性:
1.变量对象(Variable OBJECT,VO)
2.作用域链(Scope chain)
3.this

每个函数中都有一个 [[scope]] 属性,当函数创建后变量保存父量对象中,可以理解成 [[scope]]就是父量对象的一个链接层。

下面举个栗子:

       var num = 1;
		function a() {
			var num = 2;
			function  b() {
				var num = 3;
				console.log(num); //3
			}
			b();
		}
		a();

首先是 GO执行
GO={
a = 1;
fun a()
}
scope[GO]

fun a执行
fun a AO
{
num = 2
fun b;
}
此时 scope[fun a,GO]

fun b执行
fun b AO
{
num = 3;
}
此时 scope[fun b,fun a,GO]

上个图:
在这里插入图片描述
全局作用域 ——>函数1作用域 ——> 函数2作用域

就是这样啦~~~~~

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!