请移步阮一峰大大的文章let块级作用域
下面的当做例子看看就好
let只在它所在的代码块有效,并且只要代码块存在对变量的let声明,该变量严格遵守let的规则,const同let
function a(){
var a=2;
if(a>1){
const b=3;
}
console.log(b) //ReferenceError: b is not defined
}
a();
function a(){
var a=2;
if(a>1){
b=3;//ReferenceError: b is not defined
let b;
console.log(b)
}
}
a();
function a(){
if(a>1){
var b=3;
}
var a=2;
console.log(b)
}
a();
//undefined 变量提升