关于let的问题

来源:18-9 面试讲解-8:常见的正则表达式

夜魇丶

2020-03-03

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

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

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

0
2
慕函数758891
不是因为let这时不能重复声明吗
2020-10-17
共2条回复

江南沐小沐

2021-02-28

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

0
0

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4694 学习 · 1681 问题

查看课程