2021-08-21 const和let在实际使用中的区别

研究这个的起因是:看到好多大佬,会使用const声明一些常量,由此产生了疑问,const和let使用有什么区别。

一、不同点

1.const声明的是常量(这里如果声明的是引用数据类型,指的是该数据的指针不能被修改,指针指向的内容可以修改),如果声明的是一个对象obj可以通过obj.property来改变对应属性的值,声明的同时必须初始化(赋值),否则会报错。

2.let声明的是变量,可以先声明后赋值,先声明后赋值(undefined)

二、相同点

1.两者都是ES6的语法;

2.都是块级作用域(块级作用域:ES6中有{}的都有块级作用域包括if和for),且只在其声明的作用域内可用;

3.在其声明作用域内不可以重复声明,会报错;

4.都不可以变量提升(变量提升:在变量声明前使用只有var可以),只可以在声明以后使用;

5.脱离顶层作用域,var声明的变量可以通过window.变量名来使用,但是let和const声明的会脱离顶层作用域和全局,不可以通过这个方式使用。

三、其他补充

1.块级作用域可以相互嵌套,外层作用域不能使用内层作用域的变量和常量;

2.不同层级作用域可以使用相同的变量名;

3.块级作用域必须有{};

四、暂时性死区(TDZ,只变量在作用域中已经存在了,必须在let和const声明变量常量过后才可以使用)

1.ES6中规定,在一个区块中使用let或者const声明的变量,从一开始就形成了封闭作用域,如果在这之前使用变量会报错;

2.TDZ本质,进入当前作用域,变量就会存在,但是不可以获取使用,只能在let和const之后才可以获取使用,目的是为了让开发者养成先声明后使用的习惯。

本人也是小白,总结的措辞可能会有偏差,希望各位批评指正,多多交流共同进步。

猜你喜欢

转载自blog.csdn.net/apple_52295201/article/details/119822750