javascript全局环境中this指向取决于严格模式:非严格模式下指向全局对象(浏览器为window,node.js为global),严格模式、es模块顶层及全局箭头函数中this均为undefined;推荐用globalthis安全访问全局对象。

在 JavaScript 全局环境中,this 的指向取决于代码是否运行在严格模式下。
非严格模式下:this 指向全局对象
在浏览器中,全局对象是 window;在 Node.js 中,是 global。此时直接写 this 或 console.log(this),会输出对应环境的全局对象。
- 浏览器中:
this === window为 true - Node.js 中:
this === global为 true - 全局函数中未显式绑定时,
this也默认指向该全局对象
严格模式下:this 为 undefined
在严格模式("use strict")中,全局作用域里的 this 不再自动绑定到全局对象,而是保持为 undefined。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 即使在顶层脚本中写
"use strict"; console.log(this);,输出也是 undefined - 这有助于避免意外依赖全局对象,提升代码健壮性
- 箭头函数不绑定自己的
this,它继承外层普通函数的this值,但全局箭头函数仍受严格模式影响
模块环境(ES Module)中的例外
使用 import/export 的 ES 模块(如 .mjs 文件或 HTML 中 <script type="module"></script>)默认启用严格模式,且其顶层作用域的 this 始终为 undefined,无论是否显式写 "use strict"。
- 模块顶层没有“全局 this”的概念,
this不指向window或global - 这是模块系统的设计约束,与脚本(
<script></script>)行为不同
如何安全访问全局对象
如果确实需要引用全局对象(比如跨环境兼容),应避免依赖 this,而改用明确方式:
- 浏览器中可用
window、self或globalThis - Node.js 中可用
global或globalThis -
globalThis是标准方案,所有现代环境都支持,推荐优先使用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










