ES2019 / ES10有什么新功能?
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: 感兴趣的点个关注,每周一文,不止有技术,还有其他推荐哦!
本文来自博客园,作者:herryLo,转载请注明原文链接:https://www.cnblogs.com/liuheng/p/11065421.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具