ES6中的块级绑定(使用let、const注意地方)
使用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循环变量,不能使用常量
- 点赞
- 收藏
- 分享
- 文章举报
- ES6使用let命令更简单的实现块级作用域实例分析
- ES6新特性:块级作用域let和const
- ECMAScript6(ES6)标准之let、const关键字与块级作用域
- 需要注意的地方 - const 和typedef的结合使用
- ES6中的let和const ,块级作用域——暂时性死区问题
- ES6之let,const和块级作用域
- es6从入门到放弃之let,const,块级作用域
- 深入理解ES6--块级作用域(let const)
- 开始学习es6(二) let 与 const 及 块级作用域
- ES6 let,const命令和块级作用域
- 块级作用域绑定(let、const、临时死区及变量的生命周期)
- ES6入门教程之let、const的使用方法
- ES6 let和const详解及使用细节
- ES6中var, let 和const的使用和区别
- ES6 let命令和块级作用域和const命令
- ES6新特性:let和const的使用
- ES6 之 let 和 const 命令
- [APP开发技巧] 关于对象、数字、地理位置使用上需要注意的地方
- C++学习笔记(二):使用const、static类成员的注意事项
- Swift中的值类型和引用类型(let和var使用注意)