var是ES5提出的,let和const是ES6提出的
const声明的是常量,必须赋值
一旦声明必须际值,不能使用null占位,声明后不能再修改,如果声明的是复合类型数据,可以憾改其属性
let和var声明的是变量,声明后可修改,声明时可以不赋值
var允许重复声明变量,后边会覆盖前面的变量。let和const在同一作用域不允许重复声明变量,会报错
var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined.let和const不存在变量提升
var不存在块级作用域。let和const存在块级作用域