ECMAScript(简称ES)是ECMA International在ECMA-262和ISO / IEC 16262中标准化的脚本语言规范。它是为了标准化JavaScript语言而创建的,以便从浏览器供应商那里培养出多个独立的标准实现。

2019年版的ECMAScript规范增加了许多新功能,在这里我将介绍其中的一些新功能。

本文原文链接

Array.flat()

Array.flat() 返回一个新数组,其中任何子数组都被展开。Array.flat() 没有任何参数的调用,只会展开一层深度。可以提供可选的深度参数,支持连续调用。

Example:

let arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]];

arr.flat(); // [1, 2, 3, 4, 5, 6, Array(4)];

arr.flat().flat(); // [1, 2, 3, 4, 5, 6, 7, 8, 9, Array(3)];

arr.flat(3); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

//如果不知道长度,可以直接使用Infinity:
arr.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Array.flatMap()

该 Array.flatMap() ** 方法与ES6Array.Map()**方法相同,但同时也支持展平。该 **Array.flatMap()**方法首先使用映射函数映射每个元素,然后将结果展平为新数组。**flatMap() ** 通常非常有用,因为将两者合并到一个方法中效率更高。
Example:

let arr = [1, 2, 3, 4, 5];

arr.map(x => [x, x * 2]);
// [Array(2), Array(2), Array(2)]
// 0: (2)[1, 2]
// 1: (2)[2, 4]
// 2: (2)[3, 6]
// 3: (2)[4, 8]
// 4: (2)[5, 10] arr.flatMap(v => [v, v * 2]);
// [1, 2, 2, 4, 3, 6, 4, 8, 5, 10]

String.trimStart() & String.trimEnd()

String.trimStart() 可用于从字符串的开头去掉空白。String.trimEnd() 可用于从字符串的尾部去掉空白。
Example:

let  greeting =  "    Hello World";

console.log(greeting.trimStart());
// "Hello World" let greeting = "Hello World "; console.log(greeting.trimEnd());
// "Hello World"

可选 Catch Binding

可选的 catch binding 允许开发人员在catch块中,不使用error参数的情况下使用try/catch。

Example:

// ES2019 之前使用
try {
// some code
}
catch (err) {
// error handling code
} // 现在使用ES2019这样的try / catch:
try {
// some code
}
catch {
// error handling code
}

Object.fromEntries()

Object.fromEntries() 创建一个对象或将键值对转换为一个对象。它只接受 Iterable 迭代 例如:Object.fromEntries(Iterable)。

Example:

let entries = new Map([["name", "herrylo"], ["age", 24]]);

console.log(Object.fromEntries(entries));
// { name: 'herrylo', age: 24 }

Symbol.description

只读描述属性,是一个返回Symbol对象的可选描述的字符串。
Example:

let mySymbol = `My Symbol`;

let symObj = Symbol(mySymbol);

console.log(symObj) // Symbol(mySymbol);

console.log(String(symObj) === `Symbol(${mySymbol})`); // true

console.log(symObj.description); // "My Symbol"

ps: 感兴趣的点个关注,每周一文,不止有技术,还有其他推荐哦!

最新文章

  1. SQL Server 2012附加数据库时,错误提示如下:尝试打开或创建物理时,CREATE FILE 遇到操作系统错误 5(拒绝访问。)
  2. bench.sh 跑分测速
  3. (47) odoo详细操作手册
  4. foreach 和 for 循环的区别
  5. LINUX 配置IP
  6. ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework
  7. [WP8.1UI控件编程]SemanticZoom控件实现分组列表
  8. FTP\TFTP
  9. mysql bin log日志
  10. 深度分析DB2修改表
  11. 【暑假】[实用数据结构]UVAlive 3135 Argus
  12. dll的概念 dll导出变量 函数 类
  13. Object-C非正式协议与正式协议的区别
  14. R6010 -abort() has been called错误分析及其解决方法
  15. RPM安装gcc gcc-c++扩展
  16. Cannot change version of project facet Dynamic Web Module to 2.5的解决
  17. 一秒钟带你走进P图世界-----(python)PIL库的使用
  18. pycharm中range的应用
  19. styled-components 背后的魔法
  20. Tomcat服务的安装及配置

热门文章

  1. php对象在内存中创建于释放
  2. sql-实现select取行号、分组后在分组内排序、每个分组中的前n条数据
  3. 终于有人说清楚了--XGBoost算法
  4. aspnetcore 实现简单的伪静态化
  5. 客户端持久化数据库---indexedDB使用
  6. 主机地址变更后,dubbo请求时依旧会寻址旧IP的问题
  7. android_layout_relativelayout(二)
  8. SSAS Tabular 表格模型建模(关系)及部署
  9. c++小游戏——五子棋
  10. Excel催化剂开源第5波-任务窗格在OFFICE2013中新建文档不能同步显示问题解决