全局对象
这些对象在所有模块中都可用。
下列变量看起来像是全局变量,但实际上并非如此。它们仅存在于CommonJS 模块的范围内:
此处列出的对象是 Node.js 特有的。还有一些内置对象是 JavaScript 语言本身的一部分,它们也可以全局访问。
类: AbortController
[历史]
版本 | 变更 |
---|---|
v15.4.0 | 不再是实验性功能。 |
v15.0.0, v14.17.0 | 添加于:v15.0.0, v14.17.0 |
一个用于在选定的基于 Promise
的 API 中发出取消信号的实用程序类。此 API 基于 Web API AbortController
。
const ac = new AbortController()
ac.signal.addEventListener('abort', () => console.log('Aborted!'), { once: true })
ac.abort()
console.log(ac.signal.aborted) // 打印 true
abortController.abort([reason])
[历史]
版本 | 变更 |
---|---|
v17.2.0, v16.14.0 | 新增可选的 reason 参数。 |
v15.0.0, v14.17.0 | 新增于:v15.0.0, v14.17.0 |
reason
<任意> 一个可选的原因,可在AbortSignal
的reason
属性中检索。
触发中止信号,导致 abortController.signal
发出 'abort'
事件。
abortController.signal
新增于:v15.0.0, v14.17.0
类:AbortSignal
新增于:v15.0.0, v14.17.0
AbortSignal
用于在调用 abortController.abort()
方法时通知观察者。
静态方法:AbortSignal.abort([reason])
[历史]
版本 | 变更 |
---|---|
v17.2.0, v16.14.0 | 新增可选的 reason 参数。 |
v15.12.0, v14.17.0 | 新增于:v15.12.0, v14.17.0 |
reason
: <任意>- 返回值: <AbortSignal>
返回一个新的已中止的 AbortSignal
。
静态方法: AbortSignal.timeout(delay)
新增于: v17.3.0, v16.14.0
delay
<number> 在触发 AbortSignal 之前等待的毫秒数。
返回一个新的 AbortSignal
,它将在 delay
毫秒后被中止。
静态方法: AbortSignal.any(signals)
新增于: v20.3.0, v18.17.0
signals
<AbortSignal[]> 用于组合成一个新的AbortSignal
的AbortSignal
。
返回一个新的 AbortSignal
,如果任何提供的信号被中止,它将被中止。它的 abortSignal.reason
将被设置为导致它中止的 signals
中的任何一个。
事件: 'abort'
新增于: v15.0.0, v14.17.0
当调用 abortController.abort()
方法时,将发出 'abort'
事件。回调函数将被调用,并带有一个单个对象参数,该参数只有一个设置为 'abort'
的 type
属性:
const ac = new AbortController()
// 使用 onabort 属性...
ac.signal.onabort = () => console.log('aborted!')
// 或 EventTarget API...
ac.signal.addEventListener(
'abort',
event => {
console.log(event.type) // 打印 'abort'
},
{ once: true }
)
ac.abort()
与 AbortSignal
关联的 AbortController
只会触发一次 'abort'
事件。我们建议代码在添加 'abort'
事件监听器之前检查 abortSignal.aborted
属性是否为 false
。
附加到 AbortSignal
的任何事件监听器都应使用 { once: true }
选项(或者,如果使用 EventEmitter
API 附加监听器,则使用 once()
方法)来确保在处理 'abort'
事件后立即删除事件监听器。否则可能会导致内存泄漏。
abortSignal.aborted
新增于: v15.0.0, v14.17.0
- 类型: <boolean>
AbortController
被中止后为真。
abortSignal.onabort
新增于: v15.0.0, v14.17.0
- 类型: <Function>
一个可选的回调函数,用户代码可以设置它来在调用 abortController.abort()
函数时收到通知。
abortSignal.reason
新增于: v17.2.0, v16.14.0
- 类型: <any>
AbortSignal
被触发时指定的可选原因。
const ac = new AbortController()
ac.abort(new Error('boom!'))
console.log(ac.signal.reason) // Error: boom!
abortSignal.throwIfAborted()
新增于: v17.3.0, v16.17.0
如果 abortSignal.aborted
为 true
,则抛出 abortSignal.reason
。
类: Blob
新增于: v18.0.0
参见 <Blob>。
类: Buffer
新增于: v0.1.103
用于处理二进制数据。参见 buffer 部分。
类: ByteLengthQueuingStrategy
新增于: v18.0.0
[
ByteLengthQueuingStrategy](/zh/api/webstreams#class-bytelengthqueuingstrategy)
的浏览器兼容实现。
__dirname
此变量可能看起来是全局变量,但并非如此。参见 __dirname
。
__filename
此变量可能看起来是全局变量,但并非如此。参见 __filename
。
atob(data)
新增于: v16.0.0
buffer.atob()
的全局别名。
BroadcastChannel
新增于:v18.0.0
btoa(data)
新增于:v16.0.0
buffer.btoa()
的全局别名。
clearImmediate(immediateObject)
新增于:v0.9.1
clearImmediate
在 计时器 部分进行了描述。
clearInterval(intervalObject)
新增于:v0.0.1
clearInterval
在 计时器 部分进行了描述。
clearTimeout(timeoutObject)
新增于:v0.0.1
clearTimeout
在 计时器 部分进行了描述。
CloseEvent
新增于:v23.0.0
CloseEvent
类。更多详情参见 CloseEvent
。
一个与浏览器兼容的 CloseEvent
实现。可以使用 --no-experimental-websocket
CLI 标志禁用此 API。
类: CompressionStream
新增于: v18.0.0
[
CompressionStream](/zh/api/webstreams#class-compressionstream)
的浏览器兼容实现。
console
新增于: v0.1.100
用于打印到标准输出和标准错误。参见 console
部分。
类: CountQueuingStrategy
新增于: v18.0.0
[
CountQueuingStrategy](/zh/api/webstreams#class-countqueuingstrategy)
的浏览器兼容实现。
Crypto
[历史]
版本 | 变更 |
---|---|
v23.0.0 | 不再是实验性功能。 |
v19.0.0 | 不再需要 --experimental-global-webcrypto CLI 标志。 |
v17.6.0, v16.15.0 | 新增于: v17.6.0, v16.15.0 |
<Crypto>
的浏览器兼容实现。只有在编译 Node.js 二进制文件时包含了对 node:crypto
模块的支持,此全局对象才可用。
crypto
[历史]
版本 | 变更 |
---|---|
v23.0.0 | 移除实验性标记。 |
v19.0.0 | 不再需要 --experimental-global-webcrypto CLI 标记。 |
v17.6.0, v16.15.0 | v17.6.0, v16.15.0 版本中添加 |
与浏览器兼容的 Web Crypto API 实现。
CryptoKey
[历史]
版本 | 变更 |
---|---|
v23.0.0 | 移除实验性标记。 |
v19.0.0 | 不再需要 --experimental-global-webcrypto CLI 标记。 |
v17.6.0, v16.15.0 | v17.6.0, v16.15.0 版本中添加 |
与浏览器兼容的 <CryptoKey> 实现。只有在编译 Node.js 二进制文件时包含了对 node:crypto
模块的支持,此全局变量才可用。
CustomEvent
[历史]
版本 | 变更 |
---|---|
v23.0.0 | 移除实验性标识。 |
v22.1.0, v20.13.0 | CustomEvent 现在稳定。 |
v19.0.0 | 不再需要 --experimental-global-customevent CLI 标记。 |
v18.7.0, v16.17.0 | 新增于:v18.7.0, v16.17.0 |
[
CustomEvent Web API](https://dom.spec.whatwg.org/#customevent)
的浏览器兼容实现。
类:DecompressionStream
新增于:v18.0.0
[
DecompressionStream](/zh/api/webstreams#class-decompressionstream)
的浏览器兼容实现。
Event
[历史]
版本 | 变更 |
---|---|
v15.4.0 | 移除实验性标识。 |
v15.0.0 | 新增于:v15.0.0 |
Event
类的浏览器兼容实现。更多详情请参见 EventTarget
和 Event
API。
EventSource
新增于:v22.3.0, v20.18.0
[稳定性:1 - 实验性]
稳定性:1 稳定性:1 - 实验性。请使用 --experimental-eventsource
CLI 标志启用此 API。
[
EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource)
类的浏览器兼容实现。
EventTarget
[历史]
版本 | 变更 |
---|---|
v15.4.0 | 不再是实验性功能。 |
v15.0.0 | 新增于:v15.0.0 |
EventTarget
类的浏览器兼容实现。更多详情请参见 EventTarget
和 Event
API。
exports
此变量看似全局变量,但并非如此。请参见 exports
。
fetch
[历史]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性功能。 |
v18.0.0 | 不再需要 --experimental-fetch CLI 标志。 |
v17.5.0, v16.15.0 | 新增于:v17.5.0, v16.15.0 |
[
fetch()](https://developer.mozilla.org/en-US/docs/Web/API/fetch)
函数的浏览器兼容实现。
类: File
新增于: v20.0.0
参见 <File>。
类 FormData
[历史]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性功能。 |
v18.0.0 | 不再需要 --experimental-fetch CLI 标记。 |
v17.6.0, v16.15.0 | 新增于: v17.6.0, v16.15.0 |
与浏览器兼容的 <FormData> 实现。
global
新增于: v0.1.27
[稳定性: 3 - 遗留]
稳定性: 3 稳定性: 3 - 遗留。请使用 globalThis
代替。
- <Object> 全局命名空间对象。
在浏览器中,顶级作用域传统上是全局作用域。这意味着 var something
将定义一个新的全局变量,除了在 ECMAScript 模块中。在 Node.js 中,这有所不同。顶级作用域不是全局作用域;Node.js 模块内的 var something
将是该模块的局部变量,无论它是 CommonJS 模块 还是 ECMAScript 模块。
类 Headers
[历史]
版本 | 变更 |
---|---|
v21.0.0 | 移除实验性标记。 |
v18.0.0 | 移除 --experimental-fetch 命令行标志。 |
v17.5.0, v16.15.0 | v17.5.0, v16.15.0 版本中添加 |
<Headers>
的浏览器兼容实现。
localStorage
v22.4.0 版本中添加
localStorage
的浏览器兼容实现。数据以未加密的方式存储在由 --localstorage-file
命令行标志指定的 文件中。可存储数据的最大量为 10 MB。不支持在 Web 存储 API 之外修改此数据。 使用 --experimental-webstorage
命令行标志启用此 API。在服务器环境中使用时,localStorage
数据不会按用户或请求存储,它在所有用户和请求之间共享。
MessageChannel
新增于:v15.0.0
MessageChannel
类。更多详情请参见 MessageChannel
。
MessageEvent
新增于:v15.0.0
MessageEvent
类。更多详情请参见 MessageEvent
。
MessagePort
新增于:v15.0.0
MessagePort
类。更多详情请参见 MessagePort
。
module
此变量看似全局变量,但实际上并非如此。更多详情请参见 module
。
Navigator
新增于:v21.0.0
[稳定性:1 - 实验性]
稳定性:1 稳定性:1。1 - 活跃开发中。请使用 --no-experimental-global-navigator
CLI 标志禁用此 API。
Navigator API 的部分实现。
navigator
新增于:v21.0.0
[稳定性:1 - 实验性]
稳定性:1 稳定性:1.1 - 活跃开发中。可以使用 --no-experimental-global-navigator
CLI 标志禁用此 API。
window.navigator
的部分实现 (https://developer.mozilla.org/en-US/docs/Web/API/Window/navigator)。
navigator.hardwareConcurrency
新增于:v21.0.0
navigator.hardwareConcurrency
只读属性返回当前 Node.js 实例可用的逻辑处理器数量。
console.log(`此进程运行在 ${navigator.hardwareConcurrency} 个逻辑处理器上`)
navigator.language
新增于:v21.2.0
navigator.language
只读属性返回一个字符串,表示 Node.js 实例的首选语言。该语言将由 Node.js 在运行时根据操作系统的默认语言使用的 ICU 库确定。
该值表示 RFC 5646 中定义的语言版本。
在没有 ICU 的构建中,回退值为 'en-US'
。
console.log(`Node.js 实例的首选语言标签为 '${navigator.language}'`)
navigator.languages
新增于:v21.2.0
navigator.languages
只读属性返回一个字符串数组,表示 Node.js 实例的首选语言。默认情况下,navigator.languages
只包含 navigator.language
的值,该值将由 Node.js 在运行时使用的 ICU 库根据操作系统的默认语言确定。
在没有 ICU 的构建版本中,回退值为 ['en-US']
。
console.log(`The preferred languages are '${navigator.languages}'`)
navigator.platform
新增于:v21.2.0
navigator.platform
只读属性返回一个字符串,标识 Node.js 实例正在其上运行的平台。
console.log(`This process is running on ${navigator.platform}`)
navigator.userAgent
新增于:v21.1.0
navigator.userAgent
只读属性返回用户代理,包含运行时名称和主要版本号。
console.log(`The user-agent is ${navigator.userAgent}`) // 输出 "Node.js/21"
PerformanceEntry
新增于:v19.0.0
PerformanceEntry
类。更多详情参见 PerformanceEntry
。
PerformanceMark
新增于:v19.0.0
PerformanceMark
类。更多详情参见 PerformanceMark
。
PerformanceMeasure
新增于:v19.0.0
PerformanceMeasure
类。更多详情参见 PerformanceMeasure
。
PerformanceObserver
新增于:v19.0.0
PerformanceObserver
类。更多详情参见 PerformanceObserver
。
PerformanceObserverEntryList
新增于:v19.0.0
PerformanceObserverEntryList
类。更多详情参见 PerformanceObserverEntryList
。
PerformanceResourceTiming
新增于:v19.0.0
PerformanceResourceTiming
类。更多详情参见 PerformanceResourceTiming
。
performance
新增于:v16.0.0
process
新增于:v0.1.7
process
对象。参见 process
对象 部分。
queueMicrotask(callback)
新增于:v11.0.0
callback
<Function> 待排队的函数。
queueMicrotask()
方法将一个微任务排队以调用 callback
。如果 callback
抛出异常,则会发出 process
对象 的 'uncaughtException'
事件。
微任务队列由 V8 管理,其使用方法类似于由 Node.js 管理的 process.nextTick()
队列。在 Node.js 事件循环的每次循环中,process.nextTick()
队列始终在微任务队列之前处理。
// 在这里,`queueMicrotask()` 用于确保始终异步发出 'load' 事件,
// 从而保持一致性。在这里使用 `process.nextTick()` 将导致 'load'
// 事件总是在任何其他 Promise 任务之前发出。
DataHandler.prototype.load = async function load(key) {
const hit = this._cache.get(key)
if (hit !== undefined) {
queueMicrotask(() => {
this.emit('load', hit)
})
return
}
const data = await fetchData(key)
this._cache.set(key, data)
this.emit('load', data)
}
类: ReadableByteStreamController
新增于: v18.0.0
[
ReadableByteStreamController](/zh/api/webstreams#class-readablebytestreamcontroller)
的浏览器兼容实现。
类: ReadableStream
新增于: v18.0.0
[
ReadableStream](/zh/api/webstreams#class-readablestream)
的浏览器兼容实现。
类: ReadableStreamBYOBReader
新增于: v18.0.0
[
ReadableStreamBYOBReader](/zh/api/webstreams#class-readablestreambyobreader)
的浏览器兼容实现。
类: ReadableStreamBYOBRequest
新增于: v18.0.0
[
ReadableStreamBYOBRequest](/zh/api/webstreams#class-readablestreambyobrequest)
的浏览器兼容实现。
类: ReadableStreamDefaultController
新增于: v18.0.0
[
ReadableStreamDefaultController](/zh/api/webstreams#class-readablestreamdefaultcontroller)
的浏览器兼容实现。
类: ReadableStreamDefaultReader
新增于: v18.0.0
[
ReadableStreamDefaultReader](/zh/api/webstreams#class-readablestreamdefaultreader)
的浏览器兼容实现。
require()
这个变量看起来像是全局变量,但实际上并非如此。参见 require()
。
Response
[历史]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性功能。 |
v18.0.0 | 不再需要 --experimental-fetch 命令行标志。 |
v17.5.0, v16.15.0 | 新增于: v17.5.0, v16.15.0 |
<Response>
的浏览器兼容实现。
Request
[历史]
版本 | 变更 |
---|---|
v21.0.0 | 移除实验性标识。 |
v18.0.0 | 移除 --experimental-fetch 命令行标志。 |
v17.5.0, v16.15.0 | v17.5.0, v16.15.0 版本中添加 |
<Request>
的浏览器兼容实现。
sessionStorage
v22.4.0 版本中添加
sessionStorage
的浏览器兼容实现。数据存储在内存中,存储配额为 10 MB。sessionStorage
数据仅在当前运行的进程中持久存在,不会在工作进程之间共享。
setImmediate(callback[, ...args])
v0.9.1 版本中添加
setImmediate
在 定时器 部分进行了描述。
setInterval(callback, delay[, ...args])
新增于:v0.0.1
setInterval
在 计时器 部分进行了描述。
setTimeout(callback, delay[, ...args])
新增于:v0.0.1
setTimeout
在 计时器 部分进行了描述。
类:Storage
新增于:v22.4.0
Storage
的浏览器兼容实现。使用 --experimental-webstorage
CLI 标志启用此 API。
structuredClone(value[, options])
新增于:v17.0.0
WHATWG structuredClone
方法。
SubtleCrypto
[历史]
版本 | 变更 |
---|---|
v19.0.0 | 不再需要 --experimental-global-webcrypto CLI 标志。 |
v17.6.0, v16.15.0 | 新增于:v17.6.0, v16.15.0 |
<SubtleCrypto>
的浏览器兼容实现。只有在编译 Node.js 二进制文件时包含对 node:crypto
模块的支持,此全局变量才可用。
DOMException
新增于:v17.0.0
WHATWG 的 DOMException
类。更多详情请参见 DOMException
。
TextDecoder
新增于:v11.0.0
WHATWG 的 TextDecoder
类。请参见 TextDecoder
部分。
类:TextDecoderStream
新增于:v18.0.0
[
TextDecoderStream](/zh/api/webstreams#class-textdecoderstream)
的浏览器兼容实现。
TextEncoder
新增于:v11.0.0
WHATWG 的 TextEncoder
类。请参见 TextEncoder
部分。
类:TextEncoderStream
新增于:v18.0.0
[
TextEncoderStream](/zh/api/webstreams#class-textencoderstream)
的浏览器兼容实现。
类: TransformStream
新增于: v18.0.0
[
TransformStream](/zh/api/webstreams#class-transformstream)
的浏览器兼容实现。
类: TransformStreamDefaultController
新增于: v18.0.0
[
TransformStreamDefaultController](/zh/api/webstreams#class-transformstreamdefaultcontroller)
的浏览器兼容实现。
URL
新增于: v10.0.0
WHATWG URL
类。参见 URL
部分。
URLSearchParams
新增于: v10.0.0
WHATWG URLSearchParams
类。参见 URLSearchParams
部分。
WebAssembly
新增于: v8.0.0
充当所有 W3C WebAssembly 相关功能命名空间的对象。有关用法和兼容性,请参见 Mozilla 开发者网络。
WebSocket
[历史]
版本 | 变更 |
---|---|
v22.4.0 | 不再是实验性功能。 |
v22.0.0 | 不再需要 --experimental-websocket CLI 标志。 |
v21.0.0, v20.10.0 | 新增于:v21.0.0, v20.10.0 |
[
WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)
的浏览器兼容实现。可以使用 [
--no-experimental-websocket](/zh/api/cli#--no-experimental-websocket)
CLI 标志禁用此 API。
类: WritableStream
新增于: v18.0.0
[
WritableStream](/zh/api/webstreams#class-writablestream)
的浏览器兼容实现。
类: WritableStreamDefaultController
新增于: v18.0.0
[
WritableStreamDefaultController](/zh/api/webstreams#class-writablestreamdefaultcontroller)
的浏览器兼容实现。
类: WritableStreamDefaultWriter
新增于: v18.0.0
WritableStreamDefaultWriter
的浏览器兼容实现 [/api/webstreams#class-writablestreamdefaultwriter]。