{ 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;//報錯