关于暂存死区的问题

关于暂存死区的问题

老师您好,既然let声明的变量不存在像var一样的预解析(执行前先拿出来),那么,引擎怎么知道我的这个块级作用域里会存在与console。log中同名的变量呢?以至于无法向上一个作用域取得同名变量,这感觉很矛盾?或者说let也有一种特殊的预先处理的机制?

正在回答 回答被采纳积分+1

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

1回答
好帮手慕慕子 2020-08-10 14:59:45

同学你好,可以理解为let也有一种特殊的预先处理的机制。

只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响, 而在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 在解析代码时,JavaScript引擎也会注意出现在块后面的let声明,只不过在此之前不能以任何方式来引用未声明的变量。在let声明之前的执行瞬间被称为“暂时性死区”(temporal dead zone),在此阶段引用任何后面才声明的变量都会抛出ReferenceError。
    2020-09-04 17:20:36
  • "徐哥教你学编程"这位同学的解释是对的,很棒,祝学习愉快!
    2020-09-04 19:02:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

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

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

在线咨询

领取优惠

免费试听

领取大纲

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