每日一题·作用域链的理解(11/30)

目录

1. 作用域是什么:

2. 词法作用域是什么:

3. 作用域链是什么:

4. 作用域 引擎 编译器的互动

5. 作用域链的概念


1. 作用域是什么:

变量在内存中如何存储,后续使用时如何查找,有一套管理的机制和规则,这个规则就是作用域。换种说法,作用域控制着变量的可访问性,--> 谁能够访问这个变量

2. 词法作用域是什么:

指的是你的代码写在哪里,词法作用域就在哪里。比如函数的词法作用域就是在声明的位置决定好。

3. 作用域链是什么:

当前的作用域,不仅仅包含当前范围内的变量的访问权,还有对上一级的作用域里面的变量的引用,能够向上访问,但是向下访问是不被允许的。

追问

4. 作用域 引擎 编译器的互动

  • var a = 2;这句代码,编译器会问作用域,当前范围内,是否已经声明了a变量,如果声明了,就忽略var a这个声明,否则就会要求作用域来声明

  • 代码生成阶段时,引擎也会进行变量的查找,问作用域a变量有没有,有的话就拿来直接用,2赋值给它,没有就往上一级去查找。

分词、词法分析、代码生成,上面两步都在代码生成阶段

5. 作用域链的概念

  • 从开发的角度来看,当前范围找不到,就往上面去查找,到底是好还是坏?好处,公共的变量是可以共享的;坏处的话,可能会有“遮蔽效应”,就是最近一级找到了就停止了。但是如果我们想访问上一级别的呢?就不行了

  • 从知识点的联系角度,和闭包有关系,闭包之所以能够产生,作用域链是很重要的概念。闭包能够在外面访问里面,向下访问。而作用域是从里面向外面访问,他们两个合体,天下无敌

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值