关于暂存死区

关于暂存死区

http://img1.sycdn.imooc.com//climg/600c3e27096362de04060272.jpg

http://img1.sycdn.imooc.com//climg/600c3e27092e261805860204.jpg

请问老师。为什么 a, b可以被正常输出但是后面的monkey不可以?

这不是一样的结构吗?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

二者结构不一样:第一张图中,使用变量a的作用域内,没有使用let声明变量a;而第二张图,使用monkey的作用域内,使用let声明了变量monkey,如下:

http://img1.sycdn.imooc.com//climg/600cd503097c65d509730735.jpg

http://img1.sycdn.imooc.com//climg/600cd557090a724815910585.jpg

暂存性死区是指:只要作用域内存在let、const,那么它们所声明的变量或常量就会自动绑定这个区域,不再受外部作用域影响。

第一张图中, console.log(a)这句代码所在的块级作用域内没有使用let、const声明a,所以变量a没有与当前块级作用域绑定;打印a时,会沿着作用域链往外寻找a,因此能访问上一级作用域中的a,并打印出来。

第二张图中, console.log(monkey)这句代码所在的块级作用域内,使用了let声明了变量monkey,因此该变量monkey会与当前块级作用域绑定,因此执行console.log(monkey)这句代码时,只会在当前作用域中找monkey,不会沿着作用域链往外找了。由于是先使用变量monkey,后定义monkey,所以无法正常输出monkey。

祝学习愉快!


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师