跳至主要內容

var、let、const 区别

njrJavaScriptlanguage basic大约 1 分钟约 327 字

首先,三者都是 JavaScript 声明变量的方式。区别在于:

varletconst
作用域全局作用域和函数作用域块级作用域块级作用域
变量提升自动提升到作用域顶部提升,暂时性死区提升,暂时性死区
冗余声明允许冗余声明不允许不允许
赋值可以重新赋值,且不需初始化可以重新赋值,且不需初始化不可以重新赋值,必须初始化
全局声明成为 window 对象的属性不会不会

关于变量提升,varletconst 三者 都存在变量提升,但是区别在于 letconst 存在暂时性死区。

来看一个例子:

var x = { x: x }
console.log(x.x)

let y = { y: y }
console.log(y.y)

此时第一个会打印 undefined,第二个会报错。这是由于 var 有变量提升,而 let 存在暂时性死区。

暂时性死区

letconst 在声明变量之前,不能以任何方式使用该变量。在 letconst 声明之前的执行瞬间被称为「暂时性死区」。

在此阶段引用任何后面才声明的变量都会抛出错误。

总结

总之,使用 letconst 即可。