1、var的特点
1.1、存在变量提升(变量的预处理)解释:在引擎解释js代码之前会对其进行编译,编译阶段会找到所有的声明,并用合适的作用域将它们关起来。
1.2、一个变量可以声明多次,后面的会覆盖掉前面的声明。
1.3、函数中的var是局部的、其他就是全局的。
2、const的特点
2.1、const声明一个只读变量,声明后值不能改变。
2.2、const必须初始化如:const a = 1 \ const a (👎)。
2.3、const 并不是变量的值不能改变、而是变量指向的内存地址所保存的数据不得改动。
2.4、数组是引用类型、const声明该类型变量不可以改变的的是引用始终指向的某个对象,不能指向其他对象,但是对象本身是可以改变的。
3、let的特点
3.1、不存在变量提升。
3.2、let声明的变量只能在合适代码块中有效。
3.3、let不能重复声明变量;可在不同的作用域中重复。