1.let不像var,他只在相应的代码块中生效。
2.let不存在变量的提升。
console.log(foo);
var foo=2; //不会报错,存在变量的提升
console.log(bar);
let bar =2; //会报错
3.存在暂时性死区
if(true){
tmp ='abc'
console.log(tmp); //报错
let tmp;
console.log(tmp) //underfined
tmp =123;
console.log(tmp); //123
}
4.let 不允许在同一个作用域中重复声明一个变量