一、var的缺點
var foo = 999;
if(true){
var foo = 1234;
}
console.log(foo); //1234
大括號裡面的foo,會導致開頭宣告的foo,值從999變成1234
->local區域變數,影響了global全域變數
二、使用let,解決覆蓋問題
var foo = 999;
if(true){
let foo = 1234;
}
console.log(foo);//999
用let宣告變數,大括號裡面的foo,其作用域就鎖在大括號內
代表不會影響大括號外部, 亦不會去覆蓋一開頭宣告的foo, foo一樣是999
所以如果大括號內的變數是屬於「暫時性質」, 很適合用let來宣告
->local區域變數,不會影響global全域變數
三、使用const, 也可解決
概念與let一樣,local區域變數,不會影響global全域變數
另外,const是常數概念, 宣告後其值不可再更改
不過有一個小例外,
若是宣告陣列或物件
那後續是可以塞東西進去的
const aa =[];
aa['msg']=1234;
console.log(aa); //['msg'=>1234]
四、結論
不再使用var, 從此只用let和const