nodejs - 全局变量讲解 文章目录1. 核心概念global 与 globalThis2. 最重要的区别模块作用域3. 真正的全局对象 / 变量4. 看起来像全局其实不是的变量5. 最常用的全局对象process6. 如何正确使用全局变量建议7. 总结在浏览器中全局对象是window在 Node.js 中对应的是global。但 Node.js 的全局变量体系和浏览器有很大区别尤其是在模块作用域方面。1. 核心概念global与globalThis名称说明推荐程度globalNode.js 特有的全局对象旧写法不推荐新代码使用globalThisES2020 标准跨环境统一访问全局对象推荐使用// 两者在 Node.js 中指向同一个对象console.log(globalglobalThis);// true2. 最重要的区别模块作用域在浏览器中vara1;// 自动变成 window.a在 Node.js 中vara1;// 只是当前模块的局部变量不会变成 global.aconsole.log(global.a);// undefined原因Node.js 每个文件都被包装成一个模块函数类似这样(function(exports,require,module,__filename,__dirname){// 你的代码写在这里vara1;// 只在这个函数作用域内});所以想让变量真正变成全局必须显式挂载global.myVar我是全局变量;// 或者globalThis.myVar我是全局变量;其他文件中就可以直接访问console.log(global.myVar);// 我是全局变量3. 真正的全局对象 / 变量以下这些是真正全局可用的不需要 require名称说明global/globalThis全局对象本身console控制台输出process当前进程信息非常常用Buffer处理二进制数据setTimeout/setInterval定时器setImmediate/clearImmediateNode.js 特有的立即执行定时器queueMicrotask微任务队列URL/URLSearchParamsURL 处理TextEncoder/TextDecoder文本编码performance性能相关fetch较新版本网络请求4. 看起来像全局其实不是的变量这些变量只在当前模块内可用并不是真正的全局变量说明__dirname当前文件所在目录的绝对路径__filename当前文件的绝对路径module当前模块对象exportsmodule.exports的快捷方式require引入其他模块的函数console.log(__dirname);// 当前目录路径console.log(__filename);// 当前文件完整路径5. 最常用的全局对象processprocess是 Node.js 中最重要的全局对象之一// 环境变量console.log(process.env.NODE_ENV);console.log(process.env.PATH);// 命令行参数console.log(process.argv);// 当前工作目录console.log(process.cwd());// 退出程序process.exit(0);// 监听退出事件process.on(exit,(code){console.log(进程即将退出退出码,code);});6. 如何正确使用全局变量建议不推荐随便挂全局变量// 不推荐global.config{port:3000};推荐做法使用模块导出最推荐// config.jsmodule.exports{port:3000,dbUrl:mongodb://localhost/test};// 其他文件constconfigrequire(./config);使用环境变量适合配置、密钥// 通过 .env 或系统环境变量设置console.log(process.env.DB_PASSWORD);必须用全局时统一挂到一个命名空间下globalThis.App{config:{...},utils:{...}};7. 总结对比项浏览器Node.js全局对象windowglobal/globalThisvar声明自动变成全局不会变成全局模块作用域无原生模块每个文件都是独立模块推荐访问方式window/globalThisglobalThis核心记忆点Node.js 中默认没有“随便写就变成全局”的行为真正全局的东西要用global/globalThis显式挂载绝大多数情况下优先用模块导出 require/import而不是依赖全局变量 感谢阅读想了解更多 我的博客网站 | 记录思考分享干货 我的个人主页 | 关于我、开源项目

相关新闻

最新新闻

Python进阶教程:算法与数据结构入门

Python进阶教程:算法与数据结构入门

目录Python进阶教程:算法与数据结构入门一、时间复杂度二、常用数据结构2.1 列表与字典2.2 栈(Stack)2.3 队列(Queue)三、排序算法3.1 冒泡排序(O(n))3.2 快速排序(O(n log n)&#…

2026/8/25 12:49:38
京东物流(宁城)智慧物流港招商业Logistics Business Recruitment at Jingdong Logistics (Ningcheng) Smart Logistics Por

京东物流(宁城)智慧物流港招商业Logistics Business Recruitment at Jingdong Logistics (Ningcheng) Smart Logistics Por

京东物流(宁城)智能物流港是宁城县城市建设发展有限公司全资子公司宁城县城发园区管理服务有限公司与京东物流(北京京邦达)携手,在蒙东地区布局的第一个综合性物流合作项目。项目位于天义城区西南部物流园区内&#xf…

2026/8/25 12:49:38
飞牛 NAS 搭建笔记 WebDAV 服务器,实现多端笔记互通

飞牛 NAS 搭建笔记 WebDAV 服务器,实现多端笔记互通

应用场景家里、外出外地,手机、电脑、平板多设备笔记软件数据互通,完成实时双向同步。重要备注:NAS、笔记软件两者都必须支持 WebDAV 协议,才可以完成同步。笔记软件不支持 WebDAV,该方案无法生效。操作步骤第一步&…

2026/8/25 12:49:38
BFC 块级格式化上下文原理、触发条件与应用

BFC 块级格式化上下文原理、触发条件与应用

1. BFC 是什么BFC 是独立的渲染区域,内部元素布局不会影响外部,外部也不会干扰内部。2. 触发 BFC 条件根元素 htmlfloat 不为 noneoverflow 不为 visibledisplay: inline-block / flex / gridposition: absolute / fixed3. BFC 实战作用解决浮动高度塌陷…

2026/8/25 12:49:38
层级堆叠 z-index 生效条件与堆叠上下文

层级堆叠 z-index 生效条件与堆叠上下文

1. z-index 生效前提元素必须有定位(relative/absolute/fixed/sticky),static 无效。2. 堆叠上下文规则父级堆叠层级低,子级 z-index 再高也没用堆叠上下文由定位、transform、opacity、filter 等创建同上下文内 z-index 数值大在…

2026/8/25 12:49:38
我把B站收藏夹做成了个人知识库,自动总结视频要点为笔记

我把B站收藏夹做成了个人知识库,自动总结视频要点为笔记

有个数据我特别有共鸣:B站收藏夹里躺着的视频,打开率基本接近零。我也是一样,看到好的网课、技术直播、行业分享,先收藏为敬,然后……就再也没打开过。收藏=学过,这种自我安慰,收藏得…

2026/8/25 12:44:38