JavaScript作用域链

本文深入解析JavaScript中的作用域链概念,通过具体代码示例展示作用域链的形成过程及变量查找机制,帮助读者理解变量在不同作用域中的使用顺序。
作用域链:当代码执行时,会创建变量对象的一个作用域链(作用域形成的链式结构),用来控制变量的使用顺序。
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();

作用域形成的过程:

在这里插入图片描述
当打开浏览器时,先执行全局变量,生成 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
}

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值