函数之作用域链(scope)

一 .什么叫作用域链?

*作用域链:有多级作用域连续引用新城的链式结构,管控一切变量的使用顺序
(先在自己的AO中找,就延作用域链向父级作用域中去找)
案例函数:
var a = 10;
function fn(){
var b = 10
function fun1(){
console.log©;//undefined
b += 5;
var c = 20;//此处给c赋值
function fun2(){

			}
			fun2();
		}
		console.log(b);
		fun1();
		console.log(b);
	}
	fn();

利用图形来解析:在这里插入图片描述注:== [[scope]]中存储的是作用域的数组链式结构,且有访问的顺序,越在上的,越先访问==
所以fun在上面代码中访问顺序为:fn–> fun1–>fun2
执行过程:
fn denfined (定义) [scope] 0:GO 此时可以访问到a,b=10
fn doing [ scope]0:fn AO {} 此时可以用的自己的变量b=10
1:GO{}
fun1 defined [scope] 0: fnAO{} 可以访问到b
1 : GO{}
fun1 doing fun1.[[scope]] 0 : fun1AO{}
1 : fnAO{} 可以访问到b
2 : GO{}
注:(先在自己的AO中找,就延作用域链向父级作用域中去找)

                         .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值