
RegEx
ECMAScript 2024 的第 15 版引入了多项新功能。首先,它新增了调整 ArrayBuffer 和 SharedArrayBuffer 大小及传输的能力,这为开发者提供了更灵活的内存管理工具。其次,该版本添加了一个名为 /v 的新
RegExp 标志,这一标志允许创建具备更强大功能的正则表达式,以更好地处理字符串集合。此外,ECMAScript 2024 还引入了一些便捷的方法。例如,Promise.withResolvers 方法让构造 Promise 变得更加简单;Object.groupBy 和 Map.groupBy 方法可用于高效地对数据进行分组聚合。同时,Atomics.w
AItAsync 方法支持异步等待共享内存的变化,从而增强了并发编程的能力。针对字符串操作,该版本还推出了 String.prototype.isWellFormed 和 String.prototype.toWellFormed 两个方法。这些方法可以检查字符串是否仅包含格式正确的 Unicode,并在必要时对其进行修正。总体而言,ECMAScript 2024 的更新不仅扩展了语言的功能范围,还进一步优化了开发者的使用体验,使得复杂任务的处理变得更加直观和高效。此函数返回一个包含三个属性的对象:一个新的Promise,以及对应的解决和拒绝函数。具有以下特征的普通对象:一个承诺对象。一个函数,用来处理这个 Promise。用于拒绝该Promise的函数。Promise.withResolvers() 适用于以下场景:当拥有一个 Promise,并需要通过某个事件监听器来解决或拒绝它,而该监听器无法包裹在 Promise 执行器内部时使用。Promise.withResolvers() 与以下代码完全等效:Promise.withResolvers() 的关键区别在于,resolve 和 reject 函数与 Promise 本身位于同一作用域,不再像传统执行器中那样被创建并仅使用一次。这样更便于管理和控制异步操作的生命周期。Promise.withResolvers 是通用方法,可应用于任何与 Promise 构造函数签名相同的构造函数,而不仅限于标准 Promise 对象。比如,可以调用一个将 console.log 作为 resolve 和 reject 函数传入 executor 的构造函数,实现相关操作:callbackfn 是一个带有两个参数的函数。 groupBy 会按照升序对 items 的每个元素调用一次 callbackfn,从而生成一个新对象。 callbackfn 返回的值会被强制转为属性键。 对于每一个这样的属性键,结果对象都会有一个对应的属性,其键为此属性键,值是一个数组,该数组包含所有通过回调函数强制转换为该键的元素。调用 callbackfn 时使用两个参数:当前元素的值和索引。groupBy 返回的对象不继承自 Object.prototype,具有独特属性。Object.groupBy() 静态方法通过回调函数返回的字符串值,对可迭代对象的元素分组。返回值是一个对象,其中每个组对应一个属性,属性值为该组元素组成的数组。一个可迭代对象(如数组),用于对元素进行分组操作。对可迭代对象的每个元素执行的函数,需返回一个能转换为属性键(字符串或 Symbol)的值,以标识当前元素所属的分组。调用时会传入以下参数:当前处理的元素(element),以及该元素在数组中的索引(index)。此函数将决定元素如何分组。一个包含所有分组属性的空原型对象,每个属性对应一个包含相关组元素的数组。callbackfn 是一个带有两个参数的函数。 groupBy 会按照升序对 items 中的每个元素调用一次 callbackfn,从而生成一个新的 Map。 callbackfn 返回的值将作为 Map 的键。对于每一个这样的键,结果 Map 中都会有一个对应的条目。该条目的键是 callbackfn 返回的值,而其值是一个数组,包含所有通过 callbackfn 映射到该键的元素。调用 callbackfn 时使用两个参数:当前元素的值和索引。groupBy 方法的返回结果是一个 Map 类型的对象。Map.groupBy() 静态方法根据回调函数返回的值,对可迭代对象中的元素进行分组。返回的 Map 以测试函数返回的唯一值为键,每个键对应的值是一个数组,包含该组中的所有元素。一个可迭代对象(如数组),用于对元素进行分组操作。对可迭代对象的每个元素执行的函数,需返回一个值(对象或原始类型),用于表示当前元素所属的分组。调用时会传入以下参数:element,即当前处理的数组元素;index,表示该元素在数组中的索引位置。一个 Map 对象,包含各组键,每个键对应一个数组,存储关联的组元素。
此函数返回一个 Promise,当通知调用代理或超时到达时,Promise 将被解析。Atomics.wAItAsync() 静态方法会异步等待共享内存中的特定位置,并返回一个 Promise 对象。一个对象包含以下属性: - async:布尔值,表明 value 是否为一个 Promise。 - value:当 async 为 false 时,它是一个字符串,内容为 (仅在 timeout 参数为 0 时出现)。如果 async 为 true,则 value 是一个 Promise,该 Promise 最终会解析为一个字符串,内容为 。此 Promise 不会进入拒绝状态。给定一个共享的 Int32Array,对其重新表述。让读取线程休眠,于位置 0 等待,预期值为 0,result.value 会成为 promise。在读取线程或另一线程中,对内存位置 0 调用,使该 promise 状态设为 &34;。如果该值不是 &34;,则共享内存中的此位置要么未达到预期(value 会是 &34; 而非 promise),要么已超时(promise 会变为 &34;)。isWellFormed() 方法用于检查字符串是否包含孤立代理项,并返回一个布尔值结果。单独代理项是指满足以下条件之一的16位码元:一是位于范围0xD800至0xDBFF(含)内的前导代理,但若其为字符串中的最后一个码元,或后续码元非后尾代理,则视为单独代理项;二是处于范围0xDC00至0xDFFF(含)内的后尾代理,但如果它是字符串的第一个码元,或前一个码元不是前导代理,则也被视为单独代理项。若字符串不含单独代理项,则返回 true;若含,返回 false。toWellFormed 方法会将所有单独的代理项替换为 Unicode 替代字符 U+FFFD,然后返回这个处理过的字符串。新字符串为原字符串的拷贝,所有单独代理项均替换为 Unicode 替代字符 U+FFFD。/v 解锁扩展字符类支持,涵盖以下功能:标志支持字符串的这些 Unicode 属性:随着 Unicode 标准定义更多字符串属性,受支持的属性列表未来可能会扩展。