关于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回答
-
语言都是先解释,后执行。
ES6 的 let 虽然没有变量提升,但肯定也是符合这个规则的。
022020-10-17 -
江南沐小沐
2021-02-28
let不存在变量提升,声明之前不可用
00
相似问题