结合工作中使用情况,简单对es6进行一些复习总结,包括常用的语法,api等,以及短时间内要上手需要重点学习的知识点(不同工作环境可能有一些差别),主要参考链接是阮一峰的博客以及外文博客(阮老师大部分文章是直接翻译的这个博客) http://2ality.com/p/about.html
1.简介
先说一下ECMAScript,ECMA是一个标准化组织,他们制定了JavaScript的语言标准,所以之后一直称为ECMAScript,广泛的讲,Javascript是其一种标准实现,包括ECMAScript,dom,bom等
ECMA组织每年都会有新标准发布,标准名为ES+年份,所以我们会听到ES2015,ES2016,ES2017等,ES6其实就是ES2015,表示在15年发布的最新版本,相应的ES2016,ES2017分别称为ES7和ES8,依次往后对应。
现在大部分博客,文章,分享中提到的ES6其实也可以理解为ES6+,只不过因为2015年之前,ECMAScript有很多年没有发版(也有历史原因:ES4的夭折),积累了大量的新语法,api,所以在2015年一次性加在了ES6版本中发布,之后每年都只有很少的一些新增,比如:
- ES7: http://2ality.com/2016/01/ecmascript-2016.html (只有很少的两个属性)
- ES8:http://2ality.com/2016/02/ecmascript-2017.html
- …
语法提案
关于语法提案的流程,简单了解一下:一个新的语法从提案到成为标准需要经过五个阶段,每个阶段都需要标准委员会TC39定时开会进行批准
流程见链接:http://exploringjs.com/es2016-es2017/ch_tc39-process.html
需要注意的一点,所有的标准都是基于实现的,几大厂商浏览器对提案的实现必须先于标准才会进入定稿阶段,包括Babel
我们常用的async和await,就是因为16年开会的时候没有达到可定案的标准,而没有进入ES2016标准,最后添加在2017标准中
可参考该链接,有每年发布标准中新增的特性:http://2ality.com/2017/02/ecmascript-2018.html
2.简单知识点介绍
下面主要就是结合平时工作,简单介绍最常用的语法,类方法以及实例方法等,下面主要是一些列举,大部分知识点想深入学习的话,还是得到阮老师博客或者外文博客上学习
不过我标注了实际工程中的使用频率,可以参考,针对性的学习,快速上手
提示:实际开发中结合eslint可以帮助自己写出更规范的代码
使用频率极高(为方便一起介绍,会将一些不常用的语法也列出来,标题括号中也为大量使用):
2.1 let与const
这是最基础的两个命令,都是声明变量,要强制所有的声明都使用他们两个
与var的区别:
- 作用域
- var作用域在全局
- let与const作用域为代码块
- 变量提升 (https://www.jianshu.com/p/68a9b5c4a608)
- 暂时性死区,表示在一个块级作用域内,只要使用let声明一个变量,声明前将不能使用该变量
- 不允许重复声明
- 与顶层对象window或者global的关系,var声明的全局变量与顶层变量挂钩,而let const声明的全局变量不挂钩
const与let区别:
- const定义一个只读的常量,一旦声明不可改变,但需要注意的是