全局执行上下文中,this指向当前环境的全局对象:浏览器中为window,node.js中为global;严格模式下全局脚本体的this仍为window或global,属规范特例。

在全局执行上下文中,this 指向当前运行环境的全局对象:浏览器中是 window,Node.js 中是 global。这不是经验总结,而是 JavaScript 规范明确规定的绑定行为。
浏览器里直接写 this 就是 window
你在脚本最外层(不在任何函数内)执行:
console.log(this);
输出结果就是 window 对象。给它赋值:
this.name = "Alice";
等价于 window.name = "Alice",之后访问 name 或 window.name 都能得到 "Alice"。
严格模式下全局脚本体仍是 window
注意一个关键例外:即使整个脚本启用了 "use strict",全局脚本体本身 的 this 依然指向 window(浏览器)或 global(Node.js)。这是规范特例,和函数内部的严格模式行为不同。
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
别和普通函数调用混淆
全局上下文只指顶层代码,不是所有“没写在对象里”的函数都算。例如:
- console.log(this);(文件最顶部)→ window
- function foo() { console.log(this); }; foo(); → 这属于“普通函数调用”,遵循默认绑定规则,非严格模式下也得 window,但逻辑来源不同
为什么这样设计
早期 JavaScript 把全局对象作为未声明变量和函数的默认容器。this 在顶层指向它,让 this.document、this.alert() 等操作能自然对应到浏览器提供的能力。虽然现代开发不鼓励依赖它,但理解这点有助于排查全局污染或意外的 undefined 错误。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










