1.var是全局聲明,let是塊級作用的,只適用於當前代碼塊 if(){}內就是let作用於的塊 2.var變數會發生變數提升,let則不會進行變數提升 如果是 let a =2 則會提示報錯 3.var 會造成重覆賦值,迴圈里的賦值可能會造成變數泄露至全局 4.let在一個塊級作用只能賦一次值,並 ...
1.var是全局聲明,let是塊級作用的,只適用於當前代碼塊
var a = 1; if(true){ let a; a=22; console.log(a);'//22 }
if(){}內就是let作用於的塊
2.var變數會發生變數提升,let則不會進行變數提升
console.log(a) var a=2; console.log(a) 結果為underfined
如果是 let a =2 則會提示報錯
3.var 會造成重覆賦值,迴圈里的賦值可能會造成變數泄露至全局
4.let在一個塊級作用只能賦一次值,併進行當前代碼塊的鎖區,就是說當前塊只有let聲明的這個變數是有用的
var a =2; if(true){ a=3;//這個值會賦值失敗,因為let造成了if{}這塊代碼的鎖區 let a; }
5.let在一個塊級內,只能聲明一個一個相同的變數名
var a =2; if(true) { var a=1;//a=1 let a=1; let a=2;//報錯 }