var, let, const区别可以围绕以下五点来说:
变量提升
- var声明的变量存在变量提升, 即变量可以在声明之前调用, 值为undefined;
- let和const不存在变量提升, 即他们声明的变量一定要在声明后才可以使用, 否则报错;
块级作用域
- var不存在块级作用域(因为会变量提升)
- let和const存在块级作用域
重复声明
- var允许重复声明变量
- let和const在同一作用域, 不允许重复声明变量
值的可变性
- var和let声明的变量可以修改
- const声明的是一个常量, 不可修改
使用
能使用const尽量使用const, 其他大多说情况使用let, 避免使用var