js作用域链的简单理解

阅读本段代码,写出打印结果

let a = 10
let c = 10
let b = 10
function fun() {
  let b = 20
  fn()
  function fn() {
    let a = 5
    console.log(a)    //a=?
    console.log(b)    //b=?
    console.log(c)    //c=?
  }
}
fun()  //执行fun   问 a = ? , b = ? , c=?

对该代码的分析:

全局作用域下:function fun()  , let a =10 , let b = 10 , let c = 10。
	 fun函数作用域下:function fn(),let b = 20。
		fn函数作用域下:let a = 5。   
			console.log(a),fn作用域下开始找a,很幸运在本作用域下找到了a=5
			console.log(b),fn作用域下没有b,便沿着作用域链往上来到fun作用域,找到了 b = 20
			console.log(c),fn作用域没有c,,往上找来到fun作用域没有c,再往上来到全局作用域下找到c = 10
		                 

对该代码的图解:

在这里插入图片描述

总结一句话: 从输出位置开始往上找,最先找到的就是你要的结果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值