请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于let的问题

let a = 100;
function test(){
    console.log(a);
    let a = 10;
    console.log(a);
}
test();
console.log(a);

上面的代码,控制台报错:初始化前无法访问’a’。(Cannot access ‘a’ before initialization)
按照视频里的代码,test函数中,如果 a = 10 前面不加let,上面的console会打印函数外的变量a,也就是100,但是加了let就报错了。
let不存在变量提升。产生这种情况是预解析的原因吗?先解析函数体内有个let a,然后let声明的变量需要先定义再使用,所以报错。

不知道问题有没有描述清楚。辛苦老师解答。

正在回答

2回答

双越 2020-03-03 22:39:31

语言都是先解释,后执行。

ES6 的 let 虽然没有变量提升,但肯定也是符合这个规则的。

0 回复 有任何疑惑可以回复我~
  • 提问者 夜魇丶 #1
    好的 感谢!
    回复 有任何疑惑可以回复我~ 2020-03-04 22:21:46
  • 不是因为let这时不能重复声明吗
    回复 有任何疑惑可以回复我~ 2020-10-17 19:56:09
江南沐小沐 2021-02-28 20:27:35

let不存在变量提升,声明之前不可用

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信