var:
用关键字 var 声明一个变量,这个变量就属于当前的函数作用域,如果声明是发生在任何函数外的顶层声明,这个变量就属于全局作用域。即变量会挂载在window上。
var 声明的变量属于函数作用域,let 和 const 声明的变量属于块级作用域
var声明变量存在变量提升,let、const声明的变量不存在变量提升。
let:
1.let 声明的变量具有块作用域的特征。
2.在同一个块级作用域,不能重复声明变量。
3.let 声明的变量不存在变量提升,换一种说法,就是 let 声明存在暂存死区。
const:
const 定义的变量,一旦定义后,就不能修改,即 const 声明的为常量。如果声明的是复合类型数据,可以修改其属性