资讯专栏INFORMATION COLUMN

ES2019(ES10)

shiina / 1046人阅读

摘要:一将语法扩展为超集动机声称是一个子集,但是因为已经有详细记录这是不正确的,因为字符串可以包含未转义的和字符,而字符串则不能二对进行了语法更改,允许中不写捕获动机此提议引入的语法更改允许省略绑定其周围的括号原写法尝试使用可能无法实现的功能支

一、JSON superset

将ECMA-262语法扩展为JSON超集

动机

ECMAScript声称JSON是一个子集JSON.parse,但是(因为已经有详细记录)这是不正确的,因为JSON字符串可以包含未转义的U + 2028 LINE SEPARATOR和U + 2029 PARAGRAPH SEPARATOR字符,而ECMAScript字符串则不能

二、Optional catch binding

对ECMAScript进行了语法更改,允许catch中不写error捕获

动机

此提议引入的语法更改允许catch省略绑定其周围的括号

原写法

try {
  // 尝试使用可能无法实现的Web功能
} catch (unused) {
  // 支持可能无法实现的web功能情况
}

以后可以这样写

try {
  // do something
} catch {
  //
}
三、Symbol.prototype.description

新增一个Symbol.prototype.description方法,是一个只读属性,它会返回 Symbol 对象的可选描述的字符串

demo

console.log(Symbol("desc").description); // expected output: "desc"

console.log(Symbol.iterator.description); // expected output: "Symbol.iterator"

console.log(Symbol.for("foo").description); // expected output: "foo"

console.log(Symbol("foo").description + "bar"); // expected output: "foobar"
四、Function.prototype.toString revision

新增一个Function.prototype.toString方法,返回一个表示当前函数源代码的字符串

1.语法

function.toString()

2.demo

const fun = (name) => { console.log(name) }
fun.toString() // "(name) => { console.log(name) }"
五、Object.fromEntries ———— 用于将键值对列表转换为对象(兼容性有点差,chrome最新的beta版才支持)。

新增Object.fromEntries属性,用于将键值对列表转换为对象
1.语法

const newObject = Object.fromEntries(iterable);
iterable: 类似实现了可迭代协议 Array 或者 Map 或者其它对象的可迭代对象

2.demo

const newObject = Object.fromEntries([["a", 1], ["b", 2]]); // { a: 1, b: 2 }
const map = new Map().set("a", 1).set("b", 2);
const newObject1 = Object.fromEntries(map); // { a: 1, b: 2 }
六、Well-formed JSON.stringify

防止JSON.stringify返回格式错误的Unicode字符串的提议

七、String.prototype.{trimStart,trimEnd}

新增String.prototype.trimStart和String.prototype.trimEnd属性,移除空白字符,并返回一个新字符串

String.prototype.trimStart

从一个字符串的开端删除空白字段,并返回一个新字符串
1.语法

str.trimStart();

2.demo

const str = "   我愿是猪    ";
const newStr = str.trimStart(); // "我愿是猪    "
String.prototype.trimEnd

从一个字符串的末端删除空白字段,并返回一个新字符串
1.语法

str.trimEnd();

2.demo

const str = "   我愿是猪    ";
const newStr = str.trimEnd(); // "   我愿是猪"
八、Array.prototype.{flat,flatMap}

新增Array.prototype.flat和Array.prototype.flatMap属性,对数组的内含数组进行展开操作并返回一个新数组

Array.prototype.flat

!参考资料
方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回

1.语法

const newArray = arr.flat(depth)
depth: 需要展开内层数组的层数,默认为1

2.demo

展开内层数组

/** 默认参数: */
const array = [1, [2, [3]]];
const array1 = array.flat(); // [1, 2, [3]]
/** 递归展平,直到数组不再包含嵌套数组: */
const arrayInfinity = array.flat(Infinity); // [1, 2, 3]
/** 此处等同于 */
const array2 = array.flat(2);

移除空项

const array = [1, 2, , 3];
const arrayRemove = array.flat(); // [1, 2, 3]
Array.prototype.flatMap

方法类似与Array.prototype.map,但是会展开数组(只会展开一层)

1.语法

const new_array = arr.flatMap((currentValue, index, array) => {
    // 返回新数组的元素
})
currentValue: 数组中正在处理的当前元素
index: 正在处理元素的索引
array: 正在被处理素组

2.demo

const array = [1, 2, 3];
const new_array = array.flatMap(ele => [ele * 2]) // [2, 4, 6]
const new_array2 = array.flatMap(ele => [[ele * 2]]) // [[2], [4], [6]]

gitub上修改

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103260.html

相关文章

  • 目前可以使用ES10的5个新特性

    摘要:可选的语句中的有时候并没有用,思考下面代码使用浏览器可能尚未实现的功能这里回调函数中已经帮我们处理好的错误此代码中的回调的信息并没有用处。 为了保证可读性,本文采用意译而非直译。 showImg(https://segmentfault.com/img/bVbucuJ?w=1024&h=682); ECMAScript 2015,也称为ES6,是一个花了6年时间完成的主要版本。从那时起...

    canopus4u 评论0 收藏0
  • 尝鲜 ES2019 的新功能

    摘要:本文将讨论该语言的最新版本,以及它又具有了什么新功能。在本次更新中有很大的改进。在某些时候,数组的元素还是数组,这些类型的数组称为嵌套数组。要取消数组的嵌套展平它们,我们不得不使用递归。深度指的是数组内嵌套的数量。 翻译:疯狂的技术宅原文:https://medium.freecodecamp.o... 本文首发微信公众号:jingchengyideng欢迎关注,每天都给你推送新鲜...

    MoAir 评论0 收藏0
  • 每个JavaScript开发人员都应该知道的新ES2018功能(译文)

    摘要:为了使程序员能够一次一个地处理集合中的元素,引入了迭代器接口。迭代器使用该方法获取对象属性名称的数组,然后将其分配给常量。迭代器的缺点是它们不适合表示异步数据源。每次循环时,都会调用迭代器的方法,它返回一个。 前言 原文地址:https://css-tricks.com/new-es2018-features-every-javascript-developer-should-kno...

    leonardofed 评论0 收藏0
  • Linux ELK 安装(服务器架设篇)

    摘要:新增了一个,它是一个轻量级的日志收集处理工具,占用资源少,适合于在各个服务器上搜集日志后传输给,官方也推荐此工具。具体的结构如下主机系统部署服务安装准备是需要的,建议安装。先下载通用安装包。 ELK简介 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工...

    funnyZhang 评论0 收藏0
  • ES6入门10】:Proxy和Reflect

    摘要:代理原始对象,或者真实数据,可以理解为供应商代理对象,可以理解为代理商,对用户来说,直接操作,而不能直接操作拦截对象属性的读取拦截对象设置属性只让用户修改属性,其他的不允许修改拦截操作只暴露属性,其他的都不暴露拦截属性名以下划线开头的, Proxy代理 { // 原始对象,或者真实数据,可以理解为供应商 let obj = { time: 2018-10...

    Jokcy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<