var、let、const声明 - liuxiaofei2010S/special-column GitHub Wiki

综述:

目前javascript中声明变量的方法有6种:var、 let、 const、 function、 import、 class

var

  1. 存在变量提升

  2. 允许重复声明,覆盖原先声明

  3. 不会劫持当前作用域

let

  1. 不存在变量提升,存在暂时性死区

  2. 不允许重复声明

  3. 劫持当前作用域

  4. 声明的全局变量不相关顶层对象的属性

const

  1. 与上述var相同

  2. 声明的变量的指向是不可更改的,即简单数据类型变量指向的是保存的值,而对象类型变量指向的是内存地址,因此内存地址不变,但是对应的对象可以更改。除非使用Object.freeze()方法

综上所述,应该首先选择let、const声明变量