ES6 入門 — let、const

Chun
4 min readJul 2, 2020

--

避免汙染全域變數

宣告變數時,要盡量避免汙染到全域變數,這樣其他開發者在維護或合併程式碼時,才不會導致衝突或出錯。let、const 就是能避免相互污染全域變數的方法。

例如: for 迴圈裡的變數 i 也會被紀錄在 window 裡,變成一個全域變數。無形之中汙染到了全域變數。

let、const

用來宣告「區塊裡」的變數,區塊就是: { } 所涵蓋的內容範圍。在 { } 使用 let 宣告的變數,只會存活在 { } 裡,限制作用域,便不會汙染到全域變數。

以下範例:

  1. 在 { } 使用 var 宣告的變數,可在外層被讀取。
  2. 在 { } 使用 let 宣告的變數,只會存活在 { } 裡,在外層呼叫則會顯示 is not defined。

使用時機:

  1. 當希望某變數,在區塊裡執行完成後,就可以結束時。
  2. 最好都寫「函數式」,使用 function 的呼叫方式,盡量不要使用到 var。

let -for 用法

for 迴圈搭配 let 宣告變數,在區塊裡面的事件監聽會做重新綁定的動作,便可以成功抓出所有符合條件的值了(0、1、2)。

變數 i 就不會污染到全域變數,使用 console.log(i) 查看,會顯示 is not defined。

for - var 用法(不建議)

若是使用 for 搭配 var 來宣告變數時,容易污染全域變數,如下圖,i 被宣告成全域變數。

用 window 查看會發現全域變數 i: 3。所以在 for 迴圈裡綁定事件監聽的結果,只會顯示全域變數的最終結果。

const 特性

  1. 用來宣告「唯讀變數」,也就是只能讀取、不能做修改的「常數」
  2. 通常用在不能被變更的變數,如:url 網址。
  3. 如果宣告變數為「物件」或「陣列」時,則變數內容可以被修改
  4. 使用 Object.freeze( ) 使物件不能被修改

注意事項與使用時機

  1. var 會向上提升、let、const 不會向上提升。

var 變數的時候它都會向上提升到最上面位置去,到 JavaScript 最上面,先建立好一個記憶體空間。若在宣告變數前 console 則會顯示 undefined(尚未給值)。

let 跟 const ,則是在哪一行建立,則在那一行才開始成立這個變數,然後賦予值一次做完。若在宣告變數前 console 則會顯示 is not defined(尚未宣告)。

2. 同個區塊上不能重複命名

var 在同個區塊上可以重複命名,相同的變數名稱可以重新宣告,給予新的值。

let 跟 const 若重複命名,則會出錯,如下圖。

3. let、const 不會繼承到 window 上面,不會變成全域變數。

--

--

No responses yet