Node.js 中有哪些全局对象?
Node.js 中的全局对象包括 global, __filename, __dirname, console, process 和 timers。
在 Node.js 环境中,全局对象是无需使用 require()
即可直接访问的对象或属性,它们在所有模块中都可用。这些对象可以分为两大类:true global objects(直接在全局作用域中)和 module-level globals(虽在模块上下文中访问,但视为全局)。
-
global: 这是核心全局对象,类似于浏览器环境中的
window
`。它用于定义或访问全局变量,但在 Node.js 中使用全局变量需谨慎,以避免命名空间污染。 - __filename: 返回当前执行脚本的绝对路径(包含文件名)。示例:
console.log(__filename); // Output: /path/to/yourfile.js
- __dirname: 提供当前脚本文件所在目录的绝对路径。示例:
console.log(__dirname); // Output: /path/to
- console: 用于输出调试信息和日志,方法包括
console.log()
、console.error()
、console.time()
andconsole.timeEnd()
等。console.log('Hello, Node.js!'); // Outputs a message to stdout
-
process: 表示当前 Node.js 进程的状态对象。关键属性包括
process.argv
(命令行参数数组)、process.stdout
(标准输出流)和process.env
(环境变量)。 - timers: 如
setTimeout(cb, ms)
、setInterval(cb, ms)
、clearTimeout(timerId)
和clearInterval(timerId)
,用于处理异步操作。示例:setTimeout(() => console.log('Delayed'), 1000);
- Buffer: 处理二进制数据的关键工具,是全局对象而非 module-level。用于数据缓冲操作。
这些对象在 Node.js 开发中广泛使用,可直接调用,适合处理核心运行时功能如日志输出、进程管理和时间控制等。注意避免全局变量的过度使用以减少耦合风险。