var
1.var声明的变量存在变量提升,值为undefined
2、一个变量可多次声明,后面的声明会覆盖前面的声明
3、在函数中使用var声明变量的时候,该变量是局部的作用域只在函数内部,而如果在函数外部使用 var,该变量是全局的
let
1、不存在变量提升。就是 let 声明存在暂时性死区
2、let命令所在的代码块内有效,在块级作用域内有效,作用域只是在花括号里面
3、let不允许在相同作用域中重复声明,注意是相同作用域,不同作用域有重复声明不会报错
const
1、const声明一个只读的常量,声明后,值就不能改变
2、let和const不存在变量提升,即它们所声明的变量一定要在声明后使用,否则报错
4、能用const的情况下尽量使用const,大多数情况使用let,避免使用var。
const > let > var const声明的好处,一让阅读代码的人知道该变量不可修改,二是防止在修改代码的过程中无意中修改了该变量导致报错,减少bug的产生