简单介绍 Node.js 的全局对象

141 阅读2分钟

1. 什么是全局对象?

在 Node.js 中,全局对象是一个无需导入即可直接使用的对象。它是所有模块都可以访问的,因此你可以在任何地方访问它,无论是在函数内部还是全局作用域中。

你可以直接使用全局对象上的各种属性和方法,而不需要显式引用。比如,consoleprocesssetTimeout 等都是 Node.js 中的全局对象的一部分。

以下变量可能看起来是全局的但实际上不是。它们仅存在于CommonJS 模块范围内:

  • __dirname
  • __filename
  • exports
  • module
  • require()

这里列出的对象特定于 Node.js。有一些内置对象 是 JavaScript 语言本身的一部分,它们也是全局可访问的,下面介绍的常用全局对象就包含了这些看起来是全局但实际并非Node.js的全局对象。

2. 常用的全局对象及其属性

2.1 global

global 是 Node.js 的全局对象,它在所有模块中都可以访问。通过 global,你可以设置全局变量,尽管通常不建议过度使用全局变量来避免污染全局作用域。

例子

global.myGlobalVar = 'Hello, Node.js!';
console.log(myGlobalVar);  // 输出: Hello, Node.js!

2.2 process

process 对象提供了与当前 Node.js 进程相关的所有信息和控制。你可以用它来获取环境变量、设置退出代码、监听进程事件等。

常用的 process 属性和方法:

  • process.argv:命令行参数。
  • process.env:环境变量。
  • process.exit():退出进程。
  • process.on():监听进程事件(如退出事件)。

例子

console.log(process.argv);  // 输出命令行参数
console.log(process.env.NODE_ENV);  // 输出当前环境变量

2.3 console

console 对象是用于输出信息的工具,类似于浏览器中的 console。它有一些常用的方法,例如 log()error()warn()info()

例子

console.log("Hello, World!");  // 普通输出
console.error("This is an error!");  // 错误输出

2.4 setTimeoutsetInterval

Node.js 提供了与浏览器相似的定时器功能,可以使用 setTimeoutsetInterval 来设置延迟执行和周期性执行的任务。

  • setTimeout(callback[, delay[, ...args]]):延迟执行一次性任务。
  • callback计时器到时调用的函数。
  • delay 调用之前等待的毫秒数 callback默认值:  1
  • ...args 调用时传递的可选参数callback
  • 返回:用于clearTimeout()取消定时器的标志ID。
  • setInterval():周期性执行任务。

使用clearInterval()取消

例子

setTimeout(() => {
  console.log("两秒后执行!");
}, 2000);

setInterval(() => {
  console.log("每歌3秒执行一次.");
}, 3000);

2.5 __dirname__filename

这两个变量分别代表当前模块文件所在的目录路径和当前模块文件的完整路径。它们常用于文件系统操作,帮助你找到文件的位置。

例子

console.log(__dirname);  // 输出当前模块(执行文件)所在的目录 例如 d:\workspace\JavaScript
console.log(__filename); // 输出当前模块((执行文件))文件的完整路径 例如 d:\workspace\JavaScript\Globals.js

3. 总结

这边简单的介绍一下Node.js的全局对象,相关内容可以参考官方文档。