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声明的变量需要先定义再使用,所以报错。
不知道问题有没有描述清楚。辛苦老师解答。