1.var可以在括号外访问,let不能在括号外访问
例如:
vara=100;
letb=200;
}
console.log(a);
console.log(b);
打印结果:
100
ReferenceError: b is not defined
console . log (b) ;
2.let不存在变量提升
console.log('ES5:');
var a=[];
for(var i=0;i<10;i++){
var c=i;
a[i]=function(){
console.log(c)
};
};
a[5]();
console.log('ES6:')
varb=[];
for(varj=0;j<10;j++){
let k=j;
b[j]=function(){
console.log(k)
};
};
b[5]();
结果:
ES5:
9
ES6:
5
3.暂时性死区
只要块级作用域内存在let命令。它所声明的变量就“绑定”这个区域,不再受外部的影响
4.不允许重复声明
let不允许在相同的作用域内,重复声明同一个变量