简述:
ECMAScript 6 (ES6)引入了更多的编程模式,包括类,模块以及for()
循环。
ES7 主要特性是 Array.prototype.includes()
,它用于确定给定项是否在包含在数组中。
ES8 拓展了对对象字面量的支持,并可使用 async/await
来更易地编写异步代码。此外,还有一些新的功能,例如String#padStart
,Object#values
和 Object#entries
等。
深度解析:
ECMAScript6 :
在 2015 年发布的新一代 JavaScript 语言标准,包含了诸多新特性;
主要包括箭头函数、块级作用域、Class声明、模板字符串、Promise对象、Iterators & Generators以及带有加载器的模块系统等特性。 其中,箭头函数使语法更加简洁灵活; Class声明将原型相关的代码进行了更彻底地封装; 模板字符串优化字符串操作;promise对象简化异步编程;Iterators&Generators应对复杂数据结构;模块系统为浏览器和服务端引入一种新的模块解决方案。
-
类和模块
-
Arrow Function
-
let 和 const
-
Iterators and Generators
-
Promises
-
Rest Parameters
-
Spread Operator
-
新的字符串方法
-
新的对象字面量方法
-
模版字符串
-
改进原型对象
-
Map Sets WeakSets Proxies
-
常量
-
JavaScript Math对象
-
数据结构之Set
ECMAScript7 :
2016 年发布的新一代 JavaScript 语言标准,扩展了 ES6 及以前版本内容;
- 拓展路径(Exponential Operator):允许我们将简单表达式乘方写成几个大写字母,从而更容易地处理大数据集;
Array.includes()
: 允许我们在数组中搜索一个特定的值,如果要查找的特定值可以在数组中找到,则返回true。- 箭头函数:箭头函数使JS代码更简洁,避免了不必要的重复,它允许我们用更少的代码定义复杂的函数;
- async/await: async / await是ECMAScript 6的一部分,可以有效地处理多个异步任务。
ES7的API增加了多种类型的新操作,例如:
Object.values()
:用于返回给定对象的所有值,它可以一次返回一个对象的所有值。String.padStart()
和String.padEnd()
:用于在前端和尾部添加字符串中缺失的字符;Math.clamp()
:若值小于最小值,则返回最小值;若大于最大值,则返回最大值;否则返回给定值。
此外,ES7新增了一个静态优化器,这意味着JS开发人员现在可以使用更高效、更快速的代码,这样可以提高页面加载时间,并降低客户端内存消耗。
ECMAScript8 :
2017 年发布的新一代 JavaScript 语言标准,它扩展了 ES7 内容,也叫 ES2017,是ECMAScript 规范的下一个重要版本,它引入了很多新特性,如:
async/await
:用来实现异步编程,支持回调函数,使异步代码更容易读写。Object.values()
和Object.entries():
以前只能用for/in循环去遍历对象,现在可以直接使用Object.values()
,Object.keys()
和Object.entries(),“访问器”方法用于访问对象中的属性会降低大量复杂度。
String.prototype.padStart()
和String.prototype.padEnd():
可以用来进行字符串的填充SharedArrayBuffer (SASB), Atomics:
用来实现多线程中的同步问题,使用共享内存和 atomic 操作,在 Js 程序之间共享数据,控制执行顺序。Object.getOwnPropertyDescriptors():
用于读取对象属性的描述符trailing commas:
允许将逗号写在行尾,方便版本管理
ECMAScript9 :
也叫 ES2018,它引入了一些新的功能,包括:
- Rest/Spread 属性:允许在对象和数组字面量中使用三个点来声明展开语法;
- 模板字面量:用反引号 `` 把多行字符串括起来,可以隔开空格和换行;
- Promise.finally ():允许执行和Promise无关的操作,无论函数resolve或者reject;
- 箭头函数参数列表增强:允许不用指定参数列表中单个参数的括号,在列表中有多个参数就一定需要括号;
- 新的全局方法:ES9新增了很多全局方法,包括 Object.fromEntries()、Array.flat() 和 Array.flatMap();
- 伪数组对象的 Iterable :允许开发者使用 for...of 语句输出 HTMLCollection,NamedNodeMap 和 Arguments 对象等;
- Async Iterators :定义了四种使用async/await语法遍历迭代器的方法:for await...of、AsyncGenerator、AsyncIterator 以及 AsyncIterator.prototype.throw();
- Promise.finally():JavaScript Promise Contract 中的 Finally 方法,允许在最后执行一个操作,对 Promises 的处理更加简便。