Node.js 中有哪些全局对象?

Node.js 中的全局对象包括 global, __filename, __dirname, console, process 和 timers。

Node.js 简单 全局对象

在 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() and console.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 开发中广泛使用,可直接调用,适合处理核心运行时功能如日志输出、进程管理和时间控制等。注意避免全局变量的过度使用以减少耦合风险。