JavaScript:ES2019新增8个功能
作为最流行的编程语言之一,也是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个功能相关推荐
- JavaScript ES2019的新增功能
by Vali Shah 通过瓦利沙阿 JavaScript ES2019的新增功能 (What's new in JavaScript ES2019) Many of us know that th ...
- html调用一言api,纯 JavaScript 实现网站一言功能
之前网站分享过一个一言功能 >>> 网站新增一言功能--微语录就是这么简单 .主要是用来在网站指定位置显示一句语录用的,之前的方式是通过后台 PHP 获取输出到网站前端的,最近闲来无 ...
- Byr论坛 新增语法高亮功能
经过不懈地努力,nForum新增语法高亮功能,在发文/发信时,可以使用语法高亮操作使不同的语言能按其语法特征高亮显示,如下图: 发文/发信后,语法高亮效果如下图: 目前支持的语言有:ActionScr ...
- Javascript+PHP实现在线拍照功能 (转)
Javascript+PHP实现在线拍照功能 我们在一些WEB应用中可能会遇到这样的情况,用户需要自己现场拍照并上传到会员系统.比如驾校采集指纹拍照流程.考试现场采集照片等.我们今天要讲的是如何使用j ...
- CCleaner v5.55.7108 发布,新增软件升级功能
CCleaner v5.55.7108 发布了.Cleaner 是一款系统优化和隐私保护工具,主要用来清除 Windows 系统的垃圾文件与使用者的上网记录.CCleaner 的体积小,运行速度极快, ...
- Metasploit新增技巧提示功能
Metasploit新增技巧提示功能 在Metasploit 5.0.80版本中,启动msfconsole终端后,将显示有用的命令使用技巧.这些技巧可以帮助用户发现Metasploit的更多新功能.如 ...
- 微信突然更新,新增了这些功能...
作者 | 小鹿 来源 | https://mp.weixin.qq.com/s/ChSZtvVLN1IMqAO-E-2MvA 微信在昨天突然更新了,迎来了iOS 7.0.20正式版,这次更新的功能和变 ...
- jQuery插件AjaxFileUpload文件上传实现Javascript多文件上传功能
Ajax file upload plugin是一个功能强大的文件上传jQuery插件,可自定义链接.或其它元素庖代传统的file表单上传结果,可实现Ajax动态提示文件上传 过程,同时支撑多文 ...
- html5时间画布走动,javascript+HTML5 canvas绘制时钟功能示例
本文实例讲述了javascript+HTML5 canvas绘制时钟功能.分享给大家供大家参考,具体如下: 效果如下: 代码: www.jb51.net canvas绘制时钟 div{text-ali ...
最新文章
- Shippable和Packet合作提供原生ARM CI/CD
- 一些概念整理(不一定完全正确)
- css3中的background
- 计算机中的数(一):数在计算机中的表示
- 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路
- php 文件 不更新,php页面不刷新更新数据
- 2021年陕西高考成绩单招查询时间,2021年陕西单招考试时间是什么时候,单招考试分数线是多少...
- mysql mongodb插件_FLinkX的Mongodb插件优化(三)
- 实验8 群体类、流类库与输入/输出(4学时)
- RPC框架设计概要-性能
- ORACLE常用数值函数、转换函数、字符串函数【转】
- 你肯定遇到过这些电脑使用问题, 此文帮你快速解决一些常见的电脑问题(持续更新中, 建议收藏)
- 电子技术_常见贴片电阻封装功率和标称值
- Facebook三大愿景和五大核心价值
- TP5.1实现数组内容的分页和数据渲染
- 字符26进制 与 10进制【可以这样来理解】
- 关于烧饼游戏修改器的分析
- PrintWriter out=response.getWriter()的问题
- form表单中的onSubmit
- 网易云音乐linux安装路径,修复网易云音乐Linux版不能安装及运行的问题