let与const都具备块级作用域和暂时性死区,而且不具备变量提升的特性,即必须要先声明才能够使用,但是var是有变量提升特性的。let在一个块级作用域中不能重复定义,否则会报错。在作用域方面,var如果定义在函数外面则为全局的,如果定义在函数里面,则var的作用域就是函数所构建的环境上下文。const声明的常量必须进行初始化,即赋值,对于普通类型的js常量在赋值之后是无法进行更改的,但是对于引用类型的常量,我们可以更改该常量指向的引用类型的属性,但是无法更改该变量的引用,即指针。