从ES6到ES10的新特性
介绍
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)在标准ECMA-262中定义的脚本语言规范。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。
历史版本
至发稿日为止有九个ECMA-262版本发表。其历史版本如下:
1997年6月:第一版
1998年6月:修改格式,使其与ISO/IEC16262国际标准一样
1999年12月:强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变
2009年12月:添加严格模式(
"use strict")。修改了前面版本模糊不清的概念。增加了getters,setters,JSON以及在对象属性上更完整的反射。2011年6月:ECMAScript标5.1版形式上完全一致于国际标准ISO/IEC 16262:2011。
2015年6月:ECMAScript 2015(ES2015),第 6 版,最早被称作是 ECMAScript 6(ES6),添加了类和模块的语法,其他特性包括迭代器,Python风格的生成器和生成器表达式,箭头函数,二进制数据,静态类型数组,集合(maps,sets 和 weak maps),promise,reflection 和 proxies。作为最早的 ECMAScript Harmony 版本,也被叫做ES6 Harmony。
2016年6月:ECMAScript 2016(ES2016),第 7 版,多个新的概念和语言特性。
2017年6月:ECMAScript 2017(ES2017),第 8 版,多个新的概念和语言特性。
2018年6月:ECMAScript 2018 (ES2018),第 9 版,包含了异步循环,生成器,新的正则表达式特性和 rest/spread 语法。
2019年6月:ECMAScript 2019 (ES2019),第 10 版。
发展标准
TC39(Technical Committee 39)是一个推动JavaScript发展的委员会,它的成语来自各个主流浏览器的代表成语。会议实行多数决,每一项决策只有大部分人同意且没有强烈反对才能去实现。
TC39成员制定着ECMAScript的未来。
每一项新特性最终要进入到ECMAScript规范里,需要经历5个阶段,这5个阶段如下:
Stage 0: Strawperson 只要是TC39成员或者贡献者,都可以提交想法
Stage 1: Proposal 这个阶段确定一个正式的提案
Stage 2: draft 规范的第一个版本,进入此阶段的提案大概率会成为标准
Stage 3: Candidate 进一步完善提案细则
Stage 4: Finished 表示已准备好将其添加到正式的ECMAScript标准中
由于ES6以前的属性诞生年底久远,我们使用也比较普遍,遂不进行说明,ES6之后的语言风格跟ES5以前的差异比较大,所以单独拎出来做个记录。
ES6(ES2015)
ES6是一次重大的革新,比起过去的版本,改动比较大,本文仅对常用的API以及语法糖进行讲解。
Let 和 Const
在ES6以前,JS只有var一种声明方式,但是在ES6之后,就多了let跟const这两种方式。用var定义的变量没有块级作用域的概念,而let跟const则会有,因为这三个关键字创建是不一样的。
区别如下:

类(Class)
在ES6之前,如果我们要生成一个实例对象,传统的方法就是写一个构造函数,例子如下:
但是在ES6之后,我们只需要写成以下形式:
箭头函数(Arrow function)
箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或 new.target。这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。tbc
最后更新于