let、const、var的区别
(1)块级作用域: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。
(2)变量提升:var存在变量提升,let和const都不存在变量提升,何为变量提升?也就是变量在声明之前使用
(3)给全局添加属性:浏览器中的全局对象是window,Node中的全局对象则是global。var声明的变量统统都为全局变量,同时也会添加到全局对象的属性中,但是let和const则不会
(4)重复声明:var声明的的变量可以重复声明,后声明的同名变量会覆盖之前声明的变量;let和const不允许重复声明变量
(5)暂时性死区:在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。
(6)初始值设置:在声明变量时,var和let可以不设置初始值,const则必须要设置初始值
(7)重新赋值:var和let是可以重新赋值的,const如果不能改地址和重新赋值的(在基本数据类型中),在引用数据类型中是可以修改里面的值,但是地址是不能改的