var tmp=123; if(true){ tmp='abc'; let tmp; }
这个变量没有重复声明,也没有变量提升,为什么会报错?
登陆购买课程后可参与讨论,去登陆吧
同学你好,因为ES6 明确规定,如果块中存在let和const命令,这个区块对这些命令声明的变量或常量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量或常量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”。同学粘贴的这段代码,在if区块中,使用let声明tmp前,直接对该tmp变量赋值,不符合语法规定,所以会出现报错。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
入行前端,是明智的选择!市场需求大,就业前景好,入行门槛低,小白易上手 全新升级:技术更新,Vue3.0/TypeScript/React17.x; 技术更全面,从0基础到全栈开发再到大型项目构建
157 1
75 1
31 2
200 5
155 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星