一 let和const和var的区别

var、let、const 三者区别可以围绕下⾯五点展开:

  • 变量提升
  • 暂时性死区
  • 块级作⽤域
  • 重复声明
  • 修改声明的变量
  • 使⽤

1.1 变量提升

var 声明的变量存在变量提升,即变量可以在声明之前调⽤,值为 undefined

let 和 const 不存在变量提升,即它们所声明的变量⼀定要在声明后使⽤,否则报错

1.2 暂时性死区

var 不存在暂时性死区

let 和 const 存在暂时性死区,只有等到声明变量的那⼀⾏代码出现,才可以获取和使⽤该变量

1.3 块级作用域

var 不存在块级作⽤域

let 和 const 存在块级作⽤域

1.4 重复声明

var 允许重复声明变量

let 和 const 在同⼀作⽤域不允许重复声明变量

1.5 修改变量的值

var 和 let 可以

const 声明⼀个只读的常量。⼀旦声明,常量的值就不能改变

1.6 使用

能⽤ const 的情况尽量使⽤ const ,其他情况下⼤多数使⽤ let ,避免使⽤ var