类的静态初始化块
新的类静态初始化块语法允许开发者将针对某个类定义只运行一次的代码集中到一个地方。考虑下面的示例,其中一个伪随机数生成器使用静态块在 class MyPRNG
定义被评估时初始化一个熵池。
新的类静态初始化块语法允许开发者将针对某个类定义只运行一次的代码集中到一个地方。考虑下面的示例,其中一个伪随机数生成器使用静态块在 class MyPRNG
定义被评估时初始化一个熵池。
JS-BigInt-Integration 特性使在 JavaScript 和 WebAssembly 之间传递 64 位整数变得简单。本文解释了这意味着什么以及为什么有用,包括让开发者更容易、让代码运行更快,以及加速构建时间。
Atomics.wait
和 Atomics.notify
是底层同步原语,适用于实现互斥锁和其他同步手段。然而,由于Atomics.wait
是阻塞的,无法在主线程上调用(尝试这样做会抛出 TypeError
)。
JavaScript 支持一系列复合赋值运算符,允许程序员简洁地表达二元运算和赋值。当前,仅支持数学或按位运算。
JavaScript现在具备一个新的正则表达式增强功能,称为“匹配索引”。假设您希望找到JavaScript代码中与保留词重合的无效变量名,并在变量名下输出一个插入号和一个“下划线”,例如:
如果你曾经处理过 JavaScript 中的字符串,很可能遇到过 String#replace
方法。String.prototype.replace(searchValue, replacement)
根据你指定的参数返回一个替换了一些匹配项的字符串:
顶层 await
使开发者能够在异步函数之外使用 await
关键字。它像一个大的异步函数,使其他 import
它的模块在开始执行其主体之前会等待。
空值合并提案 (??
) 添加了一个新的短路操作符,用于处理默认值。
你可能已经熟悉其他的短路操作符 &&
和 ||
。这两个操作符处理“真值”和“假值”。假设代码示例为 lhs && rhs
。如果 lhs
(即左操作数)为假值,则表达式返回 lhs
。否则,返回 rhs
(即右操作数)。代码示例 lhs || rhs
的逻辑则相反。如果 lhs
为真值,则表达式返回 lhs
。否则,返回 rhs
。
在 JavaScript 中长链式的属性访问可能容易出错,因为它们中的任何一个都可能会计算为 null
或 undefined
(也称为“空值”)。在每一步检查属性的存在性容易演变为深度嵌套的 if
语句结构,或者带有长链属性访问的 if
条件语句。
如果你之前为网页浏览器编写过 JavaScript,你可能用过 window
来访问全局 this
。在 Node.js 中,你可能使用过 global
。如果你编写的代码需要同时在这两种环境下运行,你可能会检测这些对象哪个可用,然后使用它——但是随着你想支持的环境和用例数量的增加,需要检查的标识符列表会迅速膨胀,事情变得复杂起来: