「在 JavaScript 中用 var
, let
, 以及 const
有什么差別?」是在前端、JavaScript 面試中常見的考題。在面試時可以先大方向地列點說出異同之處,然后再針對每一個點進行深入說明。以下是以第一人稱撰寫的參考擬答。
var
, let
, 以及 const
都是在 JavaScript 用來做變數宣告的保留字,在 JavaScript 早期只有 var
,直到 ES2015 (ES6) 時才加入了 let
與 const
。
他們之間主要有 4 個不同
- 在作用域上,
var
可以是全域、也可以是以函式作為范圍;let
與const
則是以區塊作為范圍。 - 在宣告上,
var
可以被重復宣告,但是let
與const
則不行。 - 在提升上,
var
宣告的變數會自動初始化值為undefined
,因此在宣告前就使用變數,不會出現錯誤,而會是undefined
;但是let
與const
宣告的變數則不會自動初始化,而是會進到暫時死區(TDZ),因此在let
與const
宣告變數前使用該變數,會出現錯誤。 let
與const
在絕多數面向都是