在以往的概念里,js其实有一些没办法解决的问题
1. js没有块级作用域
for(var i= 0;i<3;i++){
var a = 'a';
}
console.log(a); //可以访问a,i
2. 循环变量过度共享
for(var i= 0;i<3;i++){
setTimeout(function (){console.log(i),1000});
}
//1s过后输出3个3
以上问题可以用let解决
1. let 声明的变量有块级作用域
2. let 声明的全局变量不是全局对象的属性。(存在一个不可见的块级作用域中,window 变量名访问不到)
3. 形如for(let x...) 的循环每次在迭代时都为 x 创造新的绑定
4. let 重复定义会出错
(未完待续)