欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript作用域链

程序员文章站 2024-02-17 16:36:10
...
作用域链:当代码执行时,会创建变量对象的一个作用域链(作用域形成的链式结构),用来控制变量的使用顺序。
var a = 10;
function fun(){
	var b = 10
	function fun1(){
		console.log(c);//undefined
		b += 5;
		var c = 20;//此处给c赋值
		function fun2(){
			console.log(d);//undefined
			var d = 5;
			console.log(c + d)//25
		}
		fun2();
	}
	console.log(b);//10
	fun1();
	console.log(b);//15
}
fun();

作用域形成的过程:

JavaScript作用域链
当打开浏览器时,先执行全局变量,生成 GO
GO{
a: undefined , 赋值后为10
fun : function…
}
再执行fun() ,生成funAO,
funAO {
b : undefined , 赋值后为10 ,在fun1()中b变为15
fun1 : function…
}
再执行fun1() ,生成fun1AO,
fun1AO{
c: undefined, 赋值后为20
fun2:function…
}
最后执行fun2() ,生成fun2AO
fun2AO{
d : undefined 赋值后为5
}

当在自己作用域范围内没有找到变量时,向自己的父级作用域查找,依次向上,直到找到为止

相关标签: javascript