📌 核心知识点:
在 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
输出结果:
小明
✅ 成功!即使你没有用 var、let 或 const 声明 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 课:模块系统入门 —— 什么是 require 和 module.exports?