🎯 第 3 课:Node.js 中的全局对象 —— global

3 阅读2分钟

📌 核心知识点:
在 Node.js 中, global 是全局对象,所有在任何地方都能访问的变量和函数都属于它。


🔍 类比理解(温故知新):

  • 在浏览器中,如果你写:
var a = 10;

那么这个 a 会自动变成 window.a,也就是说:

console.log(window.a); // 输出 10

所以,浏览器里的全局对象是 window

但在 Node.js 中 ❌ 没有 window

那谁来当“全局管理员”呢?👉 就是 global


🧪 实践一下:

打开你之前的 app.js,改成这样:

// 定义一个全局变量
global.myName = "小明";

// 现在可以在任何地方直接使用 myName
console.log(myName); // 输出: 小明

运行它:

node app.js

输出结果:

小明

✅ 成功!即使你没有用 varletconst 声明 myName,只要挂载到 global 上,就可以直接使用。


⚠️ 注意:不推荐滥用 global

虽然可以这么做,但像这样随意使用全局变量容易导致:

  • 变量污染
  • 不易调试
  • 多人协作时出问题

所以实际开发中我们会尽量避免手动往 global 上挂东西。


🔍 常见的全局成员(你已经用过的)

这些都不需要引入模块就能直接用,它们都是 global 的一部分:

全局变量/函数说明
console打印日志,其实是 global.console
setTimeout, setInterval定时器函数
process当前 Node.js 进程对象(后面会讲)
__dirname当前文件所在目录路径(虽然是全局可用,但它其实是模块级的,不是 global 的属性,稍作区分)
require()用于引入模块(也是全局函数)

🤓 小知识:你可以试试在 app.js 中打印:

你会看到一大串输出,里面包含了上面提到的那些东西。

console.log(global);

✅ 小结一句话:

Node.js 中的 global 相当于浏览器中的 window,是存放全局变量的地方,但应谨慎使用,避免污染全局环境。


📬 下一课预告:
第 4 课:模块系统入门 —— 什么是 requiremodule.exports