全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 6 分钟 ✍️ juanwangdev

Node.js global 全局对象

global 是 Node.js 的全局命名空间对象,所有全局变量和函数都是它的属性。

基本概念

JavaScript
// 全局变量自动成为 global 的属性
global.myVar = 'Hello';
console.log(myVar); // 'Hello'

// 内置全局对象
console.log(global.console === console); // true
console.log(global.process === process); // true
console.log(global.setTimeout === setTimeout); // true

global 中的内置属性

JavaScript
// 查看所有全局属性
console.log(Object.keys(global));

// 常见全局属性
global.console      // 控制台对象
global.process      // 进程对象
global.Buffer       // Buffer 类
global.setTimeout   // 定时器函数
global.setInterval  // 间隔定时器
global.setImmediate // 立即执行
global.__dirname    // 当前目录(模块局部)
global.__filename   // 当前文件路径(模块局部)

与浏览器 window 的区别

特性Node.js global浏览器 window
顶层对象globalwindow
模块作用域有(文件级作用域)无(全局共享)
var 声明模块局部成为 window 属性
DOM 访问
JavaScript
// Node.js
var a = 1;
console.log(global.a); // undefined(模块局部)

// 浏览器
// var a = 1;
// console.log(window.a); // 1(全局属性)

共享数据的正确方式

JavaScript
// ❌ 不推荐:污染全局命名空间
global.userData = { name: 'Tom' };

// ✅ 推荐:使用模块导出
// user.js
module.exports = { name: 'Tom' };

// app.js
const user = require('./user');

globalThis

ES2020 引入 globalThis,统一了不同环境下的全局对象:

JavaScript
// Node.js
console.log(globalThis === global); // true

// 浏览器
// console.log(globalThis === window); // true

避免向 global 添加属性,会造成命名冲突和内存泄漏,应使用模块系统共享数据。

要点总结

  • global 是 Node.js 的全局命名空间对象
  • 所有全局变量和函数都是 global 的属性
  • 与浏览器 window 不同,var 声明不会成为 global 属性
  • 避免直接使用 global 共享数据,推荐使用模块导出

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js exports 导出对象
下一篇 → Node.js module 模块对象
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库