ES10是与2019年相对应的ECMAScript版本。这个版本中的新功能没有ES6(2015)中的那么多。可是,也不乏一些有用的功能。正则表达式
本文在简单的代码示例中介绍了ES10提供的功能。这样,您无需复杂的解释便可快速了解新功能。算法
固然,须要具有JavaScript的基础知识才能彻底理解所介绍的新功能。数组
ES2019中的JavaScript新功能包括:async
两个新的数组方法:函数
Array.flat() 方法建立一个新数组,全部子数组元素都以递归方式合并到该数组中,直至达到指定深度。this
Array.flatMap() 方法首先使用map函数转换每一个元素,而后将结果展平为新数组。它与map()后再调用深度为1的flat() 效果相同,可是flatMap()将二者合并为一种方法,效率更高。编码
把键值对数组为元素的二维数组转换为一个对象。spa
matchAll() 方法返回全部与正则表达式匹配字符串的结果的迭代器,包括捕获组。prototype
有两种新的String方法可从字符串中删除空格:3d
trimStart() 方法从字符串的开头删除空格。
trimEnd() 方法从字符串末尾删除空格。
当建立符号时,能够提供一个字符串做为描述。在ES10中,有一个获取描述的访问器。
过去,try / catch语句中的catch子句须要一个变量。如今,它容许开发人员使用try / catch而不建立未使用的error变量绑定。
在ES10以前的版本中,不接受非转义的行分隔符U+2028和段落分隔符U+2029。
U+2028是段落分隔符。
U+2029是行分隔符。
JSON.stringify() 可能返回U+D800和U+DFFF之间的字符,来做为没有等效UTF-8字符的值。可是,JSON格式须要UTF-8编码。解决方案是,将未配对的替代代码点表示为JSON转义序列,而不是将其做为单个UTF-16代码单元返回。
V8的先前实现,对包含10个以上项的数组使用了不稳定的快速排序算法。
一种稳定的排序算法是,当两个具备相同键的对象在排序输出中出现的顺序,与未排序输入中出现的顺序相同。
toString() 方法返回一个表示函数源代码的字符串。在ES6中,当在函数上调用toString时,它将根据ECMAScript引擎返回该函数的字符串表示形式。若是可能,它将返回源代码,不然-一个标准化的占位符。
BigInt是第7个原始类型,它是一个任意精度的整数。而不单单是在9007199254740992处的最大值。
动态import()返回所请求模块的Promise。所以,可使用async/await 将导入的模块分配给变量。
全局 this 在ES10以前还没有标准化。在生产代码中,您能够经过编写下边代码来“标准化”它:
如今,新的语法字符#(哈希标签)用于直接在类中定义变量,函数,getter和setter,以及构造函数和类方法。
自2015年ES6出现以来,这个语言就一直处于高速发展的状态。在这篇文章中,咱们回顾了ES10(2019)中出现的功能,并介绍了一些在ES11(2020)中将保持稳定的功能,由于它们处于状态3,而且可能最终会在下一版中实现标准化。
尽管这些功能中的许多功能对于Web应用程序的开发可能不是必需的,可是它们提供了经过技巧或大量冗长代码才能实现的可能性。