您的位置:首页 > 其它

ES6中的块级绑定(使用let、const注意地方)

2020-03-11 11:58 190 查看

使用var 声明变量存在的问题

1、允许重复的变量声明:导致了数据被覆盖
2、变量提升:怪异的数据访问、闭包问题
3、全局变量挂载到全局对象:全局对象成员污染问题
为了解决以上用var声明所带来的问题
!ES6不仅引入let关键字用于解决变量声明的问题,同时引入了***块级作用域***的概念
块级作用域:代码执行时遇到花括号,会创建一个块级作用域,花括号结束,销毁块级作用域。

使用let声明变量

1、let声明的变量不会挂载到全局变量
2、let声明的变量不允许当前作用域范围内重复声明
3、块级作用域中声明的变量,在作用域外不能访问
4、使用let不会有变量提升,因此,不能在定义let变量之前使用它
5、底层实现上,let声明的变量实际上也会有提升,但是,提升后会将其放 入到“暂时性死区”,
6、如果访问的变量位于暂时性死区,则会报错:“Cannot access ‘a’ before initialization"
7、当代码运行到该变量的声明语句时。会将其移出
8、在循环中,用let声明的循环变量,会特殊处理,每次进入循环体,都会开启一个新的作用域,
并且将循环变量绑定到该作用域(每次循环,使用的是一个全新的循环变量),再循环中使用let声明的循环变量,在循环结束后会销毁

使用const声明变量

实际开发中尽量用const声明变量,以保证变量值不能被修改
原因:
1、根据经验,开发中的很多变量,都是不会更改,也不应该更改的
2、后续的很多框架或者是第三方JS库,都要求数据不可变,使用
常量可以一定程度上保证这一点
注意的细节:
1、常量不可变,是指声明的常量的内存空间不可变,并不保证内存空间中 的地址指向的其他空间不可变
2、常量的命名规范:
①、特殊的常量:该常量从字面意义上,一定是不可变的,比如圆周率、月地距或其他一些绝不可能变换的配置
通常:该变量的名称全部使用大写,多个单词之间用下划线分割
②、普通的常量:使用和之前一样的命名即可
3、在for循环变量,不能使用常量

  • 点赞
  • 收藏
  • 分享
  • 文章举报
夜空下的沉默 发布了6 篇原创文章 · 获赞 1 · 访问量 150 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: