ECMAScript 语言规范的开发始于1996年11月。Ecma 标准的第一个版本于 1997 年 6 月的 Ecma 大会上被采纳。
ECMAScript 2024 语言是 ECMAScript 语言规范的第 15 个版本。自 1997 年第一版发布以来,ECMAScript 已经发展成为世界上使用最广泛的通用编程语言之一。它最为人所知的是作为嵌入在网络浏览器中的语言,但也已经广泛地被用于服务器和嵌入式应用。
ECMAScript 2024 引入了许多新的特性,提高了二进制数据管理、字符串操作以及异步操作处理的能力。这些变更于 2024 年 6 月 26 日获得批准,旨在使 JavaScript 更强大、更灵活。
下面就来深入了解 ES2024 的一些新特性。
Object.groupBy 和 Map.groupBy 方法
新的 Object.groupBy 和 Map.groupBy 方法提供了一种高效聚合数据的方法。这些方法允许开发人员根据指定的标准对Array或 Map 中的元素进行分组,从而简化了数据操作和聚合任务。
let array = [1.2, 2.3, 3.4, 4.5];
let groupedByFloor = array.groupBy(Math.floor);
// Output: {1: [1.2], 2: [2.3], 3: [3.4], 4: [4.5]}
console.log(groupedByFloor);
const persons = new Map([
['male', 10],
['female', 20],
['unknown', 10]
]);
const groupedByAge = Map.groupBy(persons, ([, age]) => age);
// Map {
// 10 => Map { 'male' => 10, 'unknown' => 10 },
// 20 => Map { 'female' => 20 }
// }
console.log(groupedByAge);
ArrayBuffer 和 SharedArrayBuffer 的扩展
在 ECMAScript 2024 中,对 ArrayBuffer 进行了扩展,并增加了 SharedArrayBuffer 的构造函数。有了这些扩展,开发者可以就地调整缓冲区的大小,甚至无需复制数据即可传输缓冲区,从而在处理二进制信息时高效利用内存。
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
console.log(buffer.byteLength);
// Expected output: 8
buffer.resize(12);
console.log(buffer.byteLength);
// Expected output: 12
Promise.withResolvers
Promise.withResolvers
方法提供了一种静态方法,可返回 promise、resolve 和 reject函数,从而简化了 promise 的创建和管理。该功能对于更高效地处理异步操作。
const { promise, resolve, reject } = Promise.withResolvers();
resolve('ok');
// Output: ok
promise.then(console.log);
Promise.withResolvers()
与下方代码等价:
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
使用 Promise.withResolvers() 的好处在于,解析和拒绝函数现在与 promise 本身处于同一作用域,而不是在执行器中创建和使用一次。这可能会带来一些更高级的用例,例如在重复使用它们处理重复事件时,尤其是在处理流和队列时。与在执行器中封装大量逻辑相比,这通常也能减少嵌套。
Atomics.waitAsync
Atomics.waitAsync
方法是 ECMAScript 2024 的另一项重要新增功能,它提供了一种异步等待共享内存变化的机制。这种功能在不允许阻塞的环境(如web worker)中尤其有用。
let sharedBuffer = new SharedArrayBuffer(1024);
let int32 = new Int32Array(sharedBuffer);
Atomics.waitAsync(int32, 0, 0).value.then(() => {
console.log('Value Changed');
});
Atomics.store(int32, 0, 1);
String.prototype.isWellFormed 和 String.prototype.toWellFormed
ECMAScript 2024 引入了两种处理 Unicode 字符串的新方法:String.prototype.isWellFormed
和String.prototype.toWellFormed
。这些方法可确保字符串是格式良好的 Unicode 序列,从而改进字符串处理和数据完整性。
const malformedString = '\uD800';
// Output: false
console.log(malformedString.isWellFormed());
const wellFormedString = malformedString.toWellFormed();
console.log(wellFormedString);
1.关注FED实验室(前端开发实验室)获取更多前端热点资讯、技术实践、面试招聘等精彩内容。
2.扫描下面二维码,加小懒好友,进全栈开发交流群,一起学习和进步。
大家都在看