主题
全局变量
更新: 9/4/2025字数: 0 字 时长: 0 分钟
由于 nodejs 中没有 DOM 和 BOM,除了这些 API,其他的 ECMAscriptAPI 基本都能用。
1. 全局对象(Global Objects)
在nodejs中使用global定义全局变量,定义的变量,可以在引入的文件中也可以访问到该变量,例如a.js global.xxx = 'xxx' require('xxx.js') xxx.js 也可以访问到该变量;
在浏览器中我们定义的全局变量都在 window;nodejs 中是 global,不同的环境还需要判断。
于是在 ECMAScript 2020 出现了一个 globalThis 全局变量,在 nodejs 环境会自动切换成 global ,浏览器环境自动切换 window 非常方便。
js
global.myVar = 42; // 定义全局变量
console.log(myVar); // 42(直接访问)2. process
提供与当前 Node.js 进程交互的属性和方法:
js
环境变量:process.env(如 process.env.NODE_ENV)。
命令行参数:process.argv。
退出进程:process.exit(1)。
工作目录:process.cwd() / process.chdir()。
平台信息:process.platform、process.arch。console
日志输出(底层是 stdout/stderr):
js
console.log("Info");
console.error("Error");
console.table([{ a: 1 }, { a: 2 }]); // 表格化输出3. 全局函数(Global Functions)
定时器:
js
setTimeout(callback, delay) / clearTimeout(timeoutId)
setInterval(callback, delay) / clearInterval(intervalId)
setImmediate(callback):在 I/O 事件后立即执行(类似 setTimeout(fn, 0))。
process.nextTick(callback):在当前事件循环末尾执行(优先级高于 setImmediate)。模块包装器
js
require(id):加载模块。
exports / module:模块导出对象(CommonJS 规范)。
__filename:当前模块文件的绝对路径。
__dirname:当前模块所在目录的绝对路径。4. 全局工具类(Utility APIs)
Buffer 处理二进制数据(无需 require('buffer')):
js
const buf = Buffer.from("Hello");
console.log(buf.toString()); // "Hello"URL URL 解析与格式化(无需 require('url')):
js
const myURL = new URL("https://example.com/path?query=123");
console.log(myURL.searchParams.get("query")); // "123"TextEncoder / TextDecoder 字符串与 Uint8Array 互转(UTF-8 编码):
js
const encoder = new TextEncoder();
const data = encoder.encode("你好");