全局执行上下文中this指向全局对象:浏览器为window,Node.js为global;严格模式下函数内this为undefined,但全局脚本体仍为window。

在全局执行上下文中,this 就是指向当前环境的全局对象——浏览器里是 window,Node.js 里是 global。这不是“约定”,而是 JavaScript 规范定义的行为:当代码不在任何函数内部运行时,顶层的 this 自动绑定到这个全局宿主对象。
全局作用域下 this 的表现
直接在脚本最外层写 console.log(this),浏览器中输出的就是 window 对象;你给 this.a = 100 赋值,等价于 window.a = 100,之后访问 a 或 window.a 都能得到 100。
严格模式下的例外
如果整个脚本或函数启用了严格模式("use strict"),全局函数内部的 this 不再指向 window,而是 undefined:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
function f() { "use strict"; console.log(this); }→ 输出undefined - 但注意:全局脚本体(非函数内)即使在严格模式下,
this仍为window(规范特例)
和函数调用场景的区别
别把“全局上下文”和“普通函数调用”混淆。例如:
立即学习“Java免费学习笔记(深入)”;
-
console.log(this)(直接写在 .js 文件顶部)→window -
function foo() { console.log(this); }; foo();→ 非严格模式下也是window,但这是“默认绑定”,属于函数调用规则,不是全局上下文本身
为什么设计成这样
早期 JavaScript 把全局对象作为所有未声明变量和函数的默认容器。this 在顶层指向它,保持了一致性:无论你是读 this.document 还是调 this.alert(),实际都是在操作 window 提供的能力。现代开发虽不鼓励依赖它,但理解这点能帮你快速识别意外的全局污染或 undefined 报错来源。

















