1.var是es5提出的,let、const是es6提出的
2.var允许重复声明同一个变量,let和const在同一作用域下不允许重复声明同一个变量
3.var不存在暂时性死区,let和const存在暂时性死区。
4.var、let声明的变量可以修改值;const声明的变量一般是不可以修改值,一旦声明就必须立即初始化,不能留到以后赋值,这种情况主要是针对于基础类型(基本数据类型),而对于引用类型的变量是可以修改的。
5.var声明的变量不存在块级作用域,let和const声明的变量存在块级作用域并且声明的变量只在所声明的块级作用域内有效。
6.var声明的变量会挂载到window上,let和const声明的变量则不会。
7.var声明的变量存在变量提升现象,let和const声明的变量不存在变量提升现象