作为最流行的编程语言之一,也是Web主要开发语言,JavaScript不断发展,每次迭代都会获得一些新的内在变化。让我们看看ES2019的一些新提议的功能,这些功能很快就可能出现在我们日常编码中:

一、Array.flat()

您现在可以将嵌套数组按照指定的深度递归展开。默认值为1,如果要全部展开,可以使用Infinity。这个方法不会修改原始数组,但会创建一个新数组:

const arr1 = [1, 2, [3, 4]];
arr1.flat(); // [1, 2, 3, 4]const arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat(2); // [1, 2, 3, 4, 5, 6]const arr3 = [1, 2, [3, 4, [5, 6, [7, 8]]]];
arr3.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8]

如果数组中有一个空槽,它将会被删除:

const arr4 = [1, 2, , 4, 5];
arr4.flat(); // [1, 2, 4, 5]

二、Array.flatMap()

一种新方法,它结合了基本的map函数,然后使用新的Array.flat()方法将结果展平为深度1:

const arr1 = [1, 2, 3];arr1.map(x => [x * 4]); // [[4], [8], [12]]
arr1.flatMap(x => [x * 4]); // [4, 8, 12]

另一个更有用的例子:

const sentence = ["This is a", "regular", "sentence"];sentence.map(x => x.split(" ")); // [["This","is","a"],["regular"],["sentence"]]
sentence.flatMap(x => x.split(" ")); // ["This","is","a","regular", "sentence"]

三、String.trimStart()和String.trimEnd()

除了从字符串两边删除空格的**String.Trim()**以外,现在还有单独的方法只能从每一边删除空格:

const test = " hello ";test.trim(); // "hello";
test.trimStart(); // "hello ";
test.trimEnd(); // " hello";

四、Object.fromEntries

可以将Key-value对列表转换为对象的新方法。我们可以理解为我们已经熟悉的Object.Entries逆向操作。在转换之后,您将留下一个数组,但现在您可以将操纵的数组返回到一个对象中。让我们尝试一个例子,我们想要对所有对象属性的值进行平方

const obj = { prop1: 2, prop2: 10, prop3: 25 };let array = Object.entries(obj); // [["prop1", 2], ["prop2", 10], ["prop3", 25]]

让我们用一个简单的映射将新的键值对列表的值平方:

array = array.map(([key, value]) => [key, Math.pow(value, 2)]);
// [["prop1", 4], ["prop2", 100], ["prop3", 225]]

我们已经转换了对象值但我们留下了一个数组,这就是Object.fromEntries的用武之地,将数组转换回对象:

const newObj = Object.fromEntries(array); // {prop1: 4, prop2: 100, prop3: 225}

五、可选的Catch Binding

新建议允许您完全省略catch()参数,因为在很多情况下您不想使用它:

try {//...
} catch (er) {//handle error with parameter er
}try {//...
} catch {//handle error without parameter
}

六、Symbol.description

您现在可以访问Symbol的description属性,而不是使用toString()方法:

const testSymbol = Symbol("Desc");testSymbol.description; // "Desc"

七、Function.toString()

现在,在函数上调用toString()会完全按照定义的方式返回函数,包括空格和注释。之前:

function /* foo comment */ foo() {}foo.toString(); // "function foo() {}"

现在是:

foo.toString(); // "function /* foo comment /* foo() {}"

八、JSON.parse()

现在,行分隔符 (\u2028) 和段落分隔符 (\u2029) 符号正确解析,而不是导致SyntaxError。

原文地址:https://blog.tildeloop.com/posts/javascript-what%E2%80%99s-new-in-es2019

JavaScript:ES2019新增8个功能相关推荐

  1. JavaScript ES2019的新增功能

    by Vali Shah 通过瓦利沙阿 JavaScript ES2019的新增功能 (What's new in JavaScript ES2019) Many of us know that th ...

  2. html调用一言api,纯 JavaScript 实现网站一言功能

    之前网站分享过一个一言功能 >>> 网站新增一言功能--微语录就是这么简单 .主要是用来在网站指定位置显示一句语录用的,之前的方式是通过后台 PHP 获取输出到网站前端的,最近闲来无 ...

  3. Byr论坛 新增语法高亮功能

    经过不懈地努力,nForum新增语法高亮功能,在发文/发信时,可以使用语法高亮操作使不同的语言能按其语法特征高亮显示,如下图: 发文/发信后,语法高亮效果如下图: 目前支持的语言有:ActionScr ...

  4. Javascript+PHP实现在线拍照功能 (转)

    Javascript+PHP实现在线拍照功能 我们在一些WEB应用中可能会遇到这样的情况,用户需要自己现场拍照并上传到会员系统.比如驾校采集指纹拍照流程.考试现场采集照片等.我们今天要讲的是如何使用j ...

  5. CCleaner v5.55.7108 发布,新增软件升级功能

    CCleaner v5.55.7108 发布了.Cleaner 是一款系统优化和隐私保护工具,主要用来清除 Windows 系统的垃圾文件与使用者的上网记录.CCleaner 的体积小,运行速度极快, ...

  6. Metasploit新增技巧提示功能

    Metasploit新增技巧提示功能 在Metasploit 5.0.80版本中,启动msfconsole终端后,将显示有用的命令使用技巧.这些技巧可以帮助用户发现Metasploit的更多新功能.如 ...

  7. 微信突然更新,新增了这些功能...

    作者 | 小鹿 来源 | https://mp.weixin.qq.com/s/ChSZtvVLN1IMqAO-E-2MvA 微信在昨天突然更新了,迎来了iOS 7.0.20正式版,这次更新的功能和变 ...

  8. jQuery插件AjaxFileUpload文件上传实现Javascript多文件上传功能

     Ajax file upload plugin是一个功能强大的文件上传jQuery插件,可自定义链接.或其它元素庖代传统的file表单上传结果,可实现Ajax动态提示文件上传 过程,同时支撑多文 ...

  9. html5时间画布走动,javascript+HTML5 canvas绘制时钟功能示例

    本文实例讲述了javascript+HTML5 canvas绘制时钟功能.分享给大家供大家参考,具体如下: 效果如下: 代码: www.jb51.net canvas绘制时钟 div{text-ali ...

最新文章

  1. Shippable和Packet合作提供原生ARM CI/CD
  2. 一些概念整理(不一定完全正确)
  3. css3中的background
  4. 计算机中的数(一):数在计算机中的表示
  5. 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路
  6. php 文件 不更新,php页面不刷新更新数据
  7. 2021年陕西高考成绩单招查询时间,2021年陕西单招考试时间是什么时候,单招考试分数线是多少...
  8. mysql mongodb插件_FLinkX的Mongodb插件优化(三)
  9. 实验8 群体类、流类库与输入/输出(4学时)
  10. RPC框架设计概要-性能
  11. ORACLE常用数值函数、转换函数、字符串函数【转】
  12. 你肯定遇到过这些电脑使用问题, 此文帮你快速解决一些常见的电脑问题(持续更新中, 建议收藏)
  13. 电子技术_常见贴片电阻封装功率和标称值
  14. Facebook三大愿景和五大核心价值
  15. TP5.1实现数组内容的分页和数据渲染
  16. 字符26进制 与 10进制【可以这样来理解】
  17. 关于烧饼游戏修改器的分析
  18. PrintWriter out=response.getWriter()的问题
  19. form表单中的onSubmit
  20. 网易云音乐linux安装路径,修复网易云音乐Linux版不能安装及运行的问题

热门文章

  1. 20幅妙不可言的光涂鸦摄影作品
  2. 基于QT开发PC端文件加密工具
  3. Tesseract训练如何加入中文常见字体
  4. Python自动化抖音自动刷视频
  5. div高度100%,div宽度100%
  6. @echo off和echo off的区别
  7. [转]MySQL的binlog日志
  8. HBuilderX使用技巧(一)
  9. DNS暴力破解工具Fierce常用命令
  10. 开源软件介绍——国内和国际主要开源社区