1)var
- 使用var声明的变量即是顶级变量(window对象的属性),也是全局变量
- 使用var声明的变量存在变量提升的情况
- 使用var可以对一个变量进行多次声明,后面的声明会覆盖前面的变量声明
- 在函数中再次使用var声明这个变量的时候,这个变量就是局部的,如果直接a=1,那就是全局变量
2)let
- let所声明的变量只在let命令所在的代码块中生效
- let不存在变量提升
- let不允许在相同的作用域下重复声明
3)const
- const声明一个只读的常量,一旦声明,常量的值就不能改变(实质上是存储地址的值不能改变)
- const一旦声明,就必须赋值
- 此外参考let