var、let、const 区别
大约 1 分钟约 327 字
首先,三者都是 JavaScript 声明变量的方式。区别在于:
var | let | const | |
---|---|---|---|
作用域 | 全局作用域和函数作用域 | 块级作用域 | 块级作用域 |
变量提升 | 自动提升到作用域顶部 | 提升,暂时性死区 | 提升,暂时性死区 |
冗余声明 | 允许冗余声明 | 不允许 | 不允许 |
赋值 | 可以重新赋值,且不需初始化 | 可以重新赋值,且不需初始化 | 不可以重新赋值,必须初始化 |
全局声明 | 成为 window 对象的属性 | 不会 | 不会 |
关于变量提升,var
、let
、const
三者 都存在变量提升,但是区别在于 let
、const
存在暂时性死区。
来看一个例子:
var x = { x: x }
console.log(x.x)
let y = { y: y }
console.log(y.y)
此时第一个会打印 undefined
,第二个会报错。这是由于 var
有变量提升,而 let
存在暂时性死区。
暂时性死区
let
、const
在声明变量之前,不能以任何方式使用该变量。在 let
、const
声明之前的执行瞬间被称为「暂时性死区」。
在此阶段引用任何后面才声明的变量都会抛出错误。
总结
总之,使用 let
或 const
即可。