let、const、var 三者有何区别

86 阅读1分钟

let、const、var的区别

(1)块级作用域:  块作用域由 { }包括,letconst具有块级作用域,var不存在块级作用域。

(2)变量提升var存在变量提升,letconst都不存在变量提升,何为变量提升?也就是变量在声明之前使用

(3)给全局添加属性:浏览器中的全局对象是window,Node中的全局对象则是globalvar声明的变量统统都为全局变量,同时也会添加到全局对象的属性中,但是letconst则不会

(4)重复声明var声明的的变量可以重复声明,后声明的同名变量会覆盖之前声明的变量;letconst不允许重复声明变量

(5)暂时性死区:在使用letconst命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。

(6)初始值设置:在声明变量时,varlet可以不设置初始值,const则必须要设置初始值

(7)重新赋值varlet是可以重新赋值的,const如果不能改地址和重新赋值的(在基本数据类型中),在引用数据类型中是可以修改里面的值,但是地址是不能改的