{ let a = 10; var b = 1; } console.log(a);//会报错:a is not defined console.log(b);//输出1
console.log(a);//会报错:a is not defined,由于没有变量提高 console.log(b);//undefined,由于有变量提高,b已存在但未赋值 let a = 10; let b = 1;
若是区块中存在let或者const命令,区块对该命令声明的变量造成封闭做用域。也就是说在let、const命令生命以前,变量都是不可用的。spa
var temp = 123; if(true){ console.log(temp);//输出123 var temp = 2; } if(true){ console.log(temp); //报错:temp is not defined,存在暂时性死区 let temp = 2; }
var a = 123; var a = 12; //不报错 var b = 123; let b = 12;//报错 let c = 123; var c = 12;//报错 let d = 123; let d = 12;//报错