Skip to content

全局对象

这些对象在所有模块中都可用。

下列变量看起来像是全局变量,但实际上并非如此。它们仅存在于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

js
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 <任意> 一个可选的原因,可在 AbortSignalreason 属性中检索。

触发中止信号,导致 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

返回一个新的已中止的 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[]> 用于组合成一个新的 AbortSignalAbortSignal

返回一个新的 AbortSignal,如果任何提供的信号被中止,它将被中止。它的 abortSignal.reason 将被设置为导致它中止的 signals 中的任何一个。

事件: 'abort'

新增于: v15.0.0, v14.17.0

当调用 abortController.abort() 方法时,将发出 'abort' 事件。回调函数将被调用,并带有一个单个对象参数,该参数只有一个设置为 'abort'type 属性:

js
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

一个可选的回调函数,用户代码可以设置它来在调用 abortController.abort() 函数时收到通知。

abortSignal.reason

新增于: v17.2.0, v16.14.0

AbortSignal 被触发时指定的可选原因。

js
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.abortedtrue,则抛出 abortSignal.reason

类: Blob

新增于: v18.0.0

参见 <Blob>

类: Buffer

新增于: v0.1.103

用于处理二进制数据。参见 buffer 部分

类: ByteLengthQueuingStrategy

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[ByteLengthQueuingStrategy](/zh/api/webstreams#class-bytelengthqueuingstrategy) 的浏览器兼容实现。

__dirname

此变量可能看起来是全局变量,但并非如此。参见 __dirname

__filename

此变量可能看起来是全局变量,但并非如此。参见 __filename

atob(data)

新增于: v16.0.0

[稳定性: 3 - 遗留]

稳定性: 3 稳定性: 3 - 遗留。请改用 Buffer.from(data, 'base64')

buffer.atob() 的全局别名。

BroadcastChannel

新增于:v18.0.0

参见 <BroadcastChannel>

btoa(data)

新增于:v16.0.0

[稳定性:3 - 遗留]

稳定性:3 稳定性:3 - 遗留。请使用 buf.toString('base64') 代替。

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

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[CompressionStream](/zh/api/webstreams#class-compressionstream) 的浏览器兼容实现。

console

新增于: v0.1.100

用于打印到标准输出和标准错误。参见 console 部分。

类: CountQueuingStrategy

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[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

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定。

<Crypto> 的浏览器兼容实现。只有在编译 Node.js 二进制文件时包含了对 node:crypto 模块的支持,此全局对象才可用。

crypto

[历史]

版本变更
v23.0.0移除实验性标记。
v19.0.0不再需要 --experimental-global-webcrypto CLI 标记。
v17.6.0, v16.15.0v17.6.0, v16.15.0 版本中添加

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定。

与浏览器兼容的 Web Crypto API 实现。

CryptoKey

[历史]

版本变更
v23.0.0移除实验性标记。
v19.0.0不再需要 --experimental-global-webcrypto CLI 标记。
v17.6.0, v16.15.0v17.6.0, v16.15.0 版本中添加

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定。

与浏览器兼容的 <CryptoKey> 实现。只有在编译 Node.js 二进制文件时包含了对 node:crypto 模块的支持,此全局变量才可用。

CustomEvent

[历史]

版本变更
v23.0.0移除实验性标识。
v22.1.0, v20.13.0CustomEvent 现在稳定。
v19.0.0不再需要 --experimental-global-customevent CLI 标记。
v18.7.0, v16.17.0新增于:v18.7.0, v16.17.0

[稳定性:2 - 稳定]

稳定性:2 稳定性:2 - 稳定

[CustomEvent Web API](https://dom.spec.whatwg.org/#customevent) 的浏览器兼容实现。

类:DecompressionStream

新增于:v18.0.0

[稳定性:1 - 实验性]

稳定性:1 稳定性:1 - 实验性。

[DecompressionStream](/zh/api/webstreams#class-decompressionstream) 的浏览器兼容实现。

Event

[历史]

版本变更
v15.4.0移除实验性标识。
v15.0.0新增于:v15.0.0

Event 类的浏览器兼容实现。更多详情请参见 EventTargetEvent 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 类的浏览器兼容实现。更多详情请参见 EventTargetEvent 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

[稳定性:2 - 稳定]

稳定性:2 稳定性:2 - 稳定

[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

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定

与浏览器兼容的 <FormData> 实现。

global

新增于: v0.1.27

[稳定性: 3 - 遗留]

稳定性: 3 稳定性: 3 - 遗留。请使用 globalThis 代替。

在浏览器中,顶级作用域传统上是全局作用域。这意味着 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.0v17.5.0, v16.15.0 版本中添加

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定

<Headers> 的浏览器兼容实现。

localStorage

v22.4.0 版本中添加

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1.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

新增于:v21.0.0

[稳定性:1 - 实验性]

稳定性:1 稳定性:1。1 - 活跃开发中。请使用 --no-experimental-global-navigator CLI 标志禁用此 API。

Navigator API 的部分实现。

新增于: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)

新增于:v21.0.0

navigator.hardwareConcurrency 只读属性返回当前 Node.js 实例可用的逻辑处理器数量。

js
console.log(`此进程运行在 ${navigator.hardwareConcurrency} 个逻辑处理器上`)

新增于:v21.2.0

navigator.language 只读属性返回一个字符串,表示 Node.js 实例的首选语言。该语言将由 Node.js 在运行时根据操作系统的默认语言使用的 ICU 库确定。

该值表示 RFC 5646 中定义的语言版本。

在没有 ICU 的构建中,回退值为 'en-US'

js
console.log(`Node.js 实例的首选语言标签为 '${navigator.language}'`)

新增于:v21.2.0

navigator.languages 只读属性返回一个字符串数组,表示 Node.js 实例的首选语言。默认情况下,navigator.languages 只包含 navigator.language 的值,该值将由 Node.js 在运行时使用的 ICU 库根据操作系统的默认语言确定。

在没有 ICU 的构建版本中,回退值为 ['en-US']

js
console.log(`The preferred languages are '${navigator.languages}'`)

新增于:v21.2.0

navigator.platform 只读属性返回一个字符串,标识 Node.js 实例正在其上运行的平台。

js
console.log(`This process is running on ${navigator.platform}`)

新增于:v21.1.0

navigator.userAgent 只读属性返回用户代理,包含运行时名称和主要版本号。

js
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

perf_hooks.performance 对象。

process

新增于:v0.1.7

process 对象。参见 process 对象 部分。

queueMicrotask(callback)

新增于:v11.0.0

queueMicrotask() 方法将一个微任务排队以调用 callback。如果 callback 抛出异常,则会发出 process 对象'uncaughtException' 事件。

微任务队列由 V8 管理,其使用方法类似于由 Node.js 管理的 process.nextTick() 队列。在 Node.js 事件循环的每次循环中,process.nextTick() 队列始终在微任务队列之前处理。

js
// 在这里,`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

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[ReadableByteStreamController](/zh/api/webstreams#class-readablebytestreamcontroller) 的浏览器兼容实现。

类: ReadableStream

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[ReadableStream](/zh/api/webstreams#class-readablestream) 的浏览器兼容实现。

类: ReadableStreamBYOBReader

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[ReadableStreamBYOBReader](/zh/api/webstreams#class-readablestreambyobreader) 的浏览器兼容实现。

类: ReadableStreamBYOBRequest

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[ReadableStreamBYOBRequest](/zh/api/webstreams#class-readablestreambyobrequest) 的浏览器兼容实现。

类: ReadableStreamDefaultController

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[ReadableStreamDefaultController](/zh/api/webstreams#class-readablestreamdefaultcontroller) 的浏览器兼容实现。

类: ReadableStreamDefaultReader

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[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

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定

<Response> 的浏览器兼容实现。

Request

[历史]

版本变更
v21.0.0移除实验性标识。
v18.0.0移除 --experimental-fetch 命令行标志。
v17.5.0, v16.15.0v17.5.0, v16.15.0 版本中添加

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定

<Request> 的浏览器兼容实现。

sessionStorage

v22.4.0 版本中添加

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1.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

[稳定性:1 - 实验性]

稳定性:1 稳定性:1.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

[稳定性:2 - 稳定]

稳定性:2 稳定性:2 - 稳定。

<SubtleCrypto> 的浏览器兼容实现。只有在编译 Node.js 二进制文件时包含对 node:crypto 模块的支持,此全局变量才可用。

DOMException

新增于:v17.0.0

WHATWG 的 DOMException 类。更多详情请参见 DOMException

TextDecoder

新增于:v11.0.0

WHATWG 的 TextDecoder 类。请参见 TextDecoder 部分。

类:TextDecoderStream

新增于:v18.0.0

[稳定性:1 - 实验性]

稳定性:1 稳定性:1 - 实验性。

[TextDecoderStream](/zh/api/webstreams#class-textdecoderstream) 的浏览器兼容实现。

TextEncoder

新增于:v11.0.0

WHATWG 的 TextEncoder 类。请参见 TextEncoder 部分。

类:TextEncoderStream

新增于:v18.0.0

[稳定性:1 - 实验性]

稳定性:1 稳定性:1 - 实验性。

[TextEncoderStream](/zh/api/webstreams#class-textencoderstream) 的浏览器兼容实现。

类: TransformStream

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[TransformStream](/zh/api/webstreams#class-transformstream) 的浏览器兼容实现。

类: TransformStreamDefaultController

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[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

[稳定性: 2 - 稳定]

稳定性: 2 稳定性: 2 - 稳定。

[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

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[WritableStream](/zh/api/webstreams#class-writablestream) 的浏览器兼容实现。

类: WritableStreamDefaultController

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

[WritableStreamDefaultController](/zh/api/webstreams#class-writablestreamdefaultcontroller) 的浏览器兼容实现。

类: WritableStreamDefaultWriter

新增于: v18.0.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1 - 实验性。

WritableStreamDefaultWriter 的浏览器兼容实现 [/api/webstreams#class-writablestreamdefaultwriter]。