1 为什么需要有let 关键词,首先要理解js的作用域
1.1 我们知道c语言中有全局变量/局部变量/块级变量
int x = 1;
int main(){
return 0;
}
//全局变量
int x = 3;
void f(){
int x = 1;
//局部变量,屏蔽外部变量
printf("%d",x); //1
}
int main(){
for(int i = 0 ; i < 10 ; i++ ){
int x = 3;
//块级变量
//同样还可以用if while甚至{}申明块级变量
}
printf("%d",x);//error,找不到x这个变量
}
1.2但是js中没有 块级变量
所以在js中
for(var x = 1 ; x < 10 ; x++){
//做点什么
}
console.log(x)//10
//块级变量在申明它的块之外也能被访问到
//x表现的类似于一个全局变量
//占用内存
//污染作用域
所以引入了let关键词用来申明块级变量
//上面的代码修改成为
for(let x = 1 ; x < 10 ; x++){
//做点什么
}
console.log(x)//x is not defined