【Javascript】ES6:宣告變數時var, let, const 的區別?

一、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