什麼是 ES6
JavaScript 所採用的標準是 ECMAScript,自 2012 年起,所有現代的瀏覽器均已全面支援 ECMAScript 5.1。較老舊的瀏覽器最少也會支援 ECMAScript 3。ECMA International 於 2015 年 6 月 17 日發布第六版的 ECMAScript,其正式名稱是 ECMAScript 2015,原先被稱作 ECMAScript 6 或 ES6。
但 ES6 語法依然還有瀏覽器不支援,所以還會利用 BABEL 做編譯,但 ES6 在開發上的確會省下不少時間,而且編輯器外掛直接可以安裝 BABEL,是提升 JS 程式碼品質的最佳利器!
let、const
let、const 是 ES6 之後加入的用法,其作用的範圍跟 var 有些差異。
- let 與 const 是區塊作用域(block scope),區塊就是在大括號內 { } 。
- var 是函式作用域(function scope)。
let 跟 var 的不同
let 可以宣告只能在目前區塊、階段或表達式中作用的變數。而 var 則是定義了一個全域變數,或是在整個 function 而不管該區塊範圍。宣告 let 的作用範圍是它們被定義的區塊,以及該區塊包含的子區塊。這樣看起來功能跟 var 很相似。主要不同的地方在於 var 作用範圍是「整個」function:
1 | function varTest() { |
在上列例子裡的最前行 let 和 var 不同,let 並不會在全域物件中建立變數。舉例來說:
1 | var x = "global"; |
const
const 宣告的是常數,英文全名是: Constants,常數在被宣告時就務必要指定給值,不然會產生錯誤。
常數是不可再指定(can’t re-assignment)的。
const 一定要帶值,不帶值會跳錯。因為 const 在宣告時必須給定值,並且不能再被更改,這可以有效降低出現錯誤的機會。如果是需要變更的數值則改用作用範圍較小的 let 做宣告,來減少錯誤出現的機率,Ex: for 迴圈。
在 ES6 當中會首推使用 const,避免汙染到全域變數,並且給予值之後,比較不會因為輸入錯誤關係而跳錯,回頭找不到 BUG,如果使用 funciton 或是 for 迴圈,可以使用 let,總之,盡量使用 const 跟 let 代替 var 就是了!
如果真的要使用 var 宣告變數,還是可以,如果在許多的 function 中會使用到該變數的內容,還是可以使用 var 做宣告,但還是會建議在各函式中使用 let,會比較好維護!