在JavaScript全局环境中,this指向对应环境的全局对象:浏览器中为window,Node.js普通脚本中为global;ES模块顶层this为undefined,严格模式不影响全局this。

在 JavaScript 全局环境下,this 指向全局对象。
浏览器中指向 window
在浏览器环境(非模块、非严格模式的 script 标签或顶层脚本)中,全局 this 就是 window 对象:
console.log(this === window); // truethis.document === document // true- 给 this 添加属性,等同于挂在 window 上:
this.name = 'test'; console.log(window.name); // 'test'
Node.js 中指向 global
在 Node.js 的普通脚本(非 ES 模块)中,全局 this 指向 global 对象:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
console.log(this === global); // true- 注意:ES 模块(.mjs 或 type="module")中顶层 this 是 undefined,因为模块作用域不是全局对象上下文
严格模式不影响全局 this
和函数内不同,全局环境下的 this 不受 "use strict" 影响:
立即学习“Java免费学习笔记(深入)”;
- 无论是否开启严格模式,
this在全局作用域始终指向对应环境的全局对象(window 或 global) - 只有在函数内部调用时,严格模式才让 this 变为 undefined
模块环境是个例外
ES 模块(import/export)顶层不是全局对象上下文:
- 模块中
this为 undefined(不是 window 或 global) - 这是模块设计使然,避免意外污染全局对象
- 如需访问全局对象,显式使用
window(浏览器)或globalThis(跨环境推荐)

















