Let And Const
Last updated
Was this helpful?
Last updated
Was this helpful?
以下會比較ES6後出現的 Let
and Const
In ES5 Only var
In ES6:let
、const
、var
參考資料:
let
:用來宣告變數,所宣告的變數只在let
命令所在的程式碼區塊內有效。
const
:用來宣告常數,所謂常數就是不可以更改的變數。
let
、const
:具有區塊作用域(Block Scope)。
var
:函式作用域。以function為界,在外讀不到。但若像 if / else / for / while,宣告的 var
仍可在整段程式碼做存取。
let
宣告的變數只在宣告時所在的程式碼區塊內有效。
每次執行函式時,就會建立區域變數,結束後再摧毀
暫時性死區(TDZ):在程式區塊內,使用let命令宣告變數之前,該變數都不可使用。
let
不允許在同一個作用域內重複宣告變數。
在for
迴圈的時候
const 宣告一個只讀的常量,一經宣告,無法再改變。
一但宣告變數,·必須立刻初始化(賦值),只宣告不賦值,報錯。
一樣只在作用域內有效(請參考let
的第一點)。
const
保證的是變數指向的那個記憶體位址不得改變。
對於數值、字串、布林,值是儲存於變數指向的那個記憶體位址。
對於複合型別的資料(物件、陣列),變數指向的記憶體位址,是一個指向實際資料的指標,const 只能保證這個指標是固定的(即總是指向一個固定的位址),至於其指向的資料結構是否可變,就無法控制。
與
undefined:代表此變數還沒有給值,所以不知道是啥
Null:代表此變數可能曾經有值,但現在沒有值
有變數提升現象,但因暫時性死區會變成ReferenceError。(變數提升:Hoisting)。 這邊要特別提出一個參考資料: