# var let const

# var

  1. var 声明的变量可以进行变量提升, 会将声明和赋值分成两个。
  2. var 可以重复声明。
  3. var 在非函数作用域中定义是挂在到 window 上的。

# let

  1. let 声明的变量具有块作用域的特征。
  2. 在同一个块级作用域,不能重复声明变量。
  3. let 声明的变量不存在变量提升, 暂时性死区.

# const

  1. const 具备 let 声明的特点。
  2. 一旦定义后,就不能修改. 创建一个值的只读引用, 但是值的内部内容是可变的。
  3. const 声明必须设置初始值。