「在 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
在绝多数面向都是