JavaScript 中 this 在严格模式下指向谁
在严格模式下,全局作用域中的 this 依然指向全局对象(浏览器中为 window),但在普通函数调用时不再自动提升为全局对象,而是保持为 undefined。这意味着如果代码试图访问 this.name 而 this 是 undefined,会直接抛出 typeerror 异常。

普通函数调用时的行为差异
当在非箭头函数的普通函数内部使用 this 且没有通过 .call()、.apply() 或 .bind() 显式绑定,也没有作为对象方法被调用时,严格模式下的 this 值为 undefined。这与非严格模式下的静默回退到全局对象形成对比,严格模式通过报错来暴露潜在的错误逻辑。

你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
function testStrict() {
"use strict";
console.log(this); // 输出: undefined
}
testStrict();
构造函数与对象方法中的表现
在使用 new 关键字调用构造函数时,即使处于严格模式,this 也会正确指向新创建的对象实例。同样,当函数作为对象的方法被调用时,this 依然指向该对象。这些场景下的行为与非严格模式一致,因为此时 this 的绑定是由调用上下文决定的,而非默认的隐式绑定规则。

function Person(name) {
"use strict";
this.name = name; // this 指向新创建的实例
}
const p = new Person("Alice");
console.log(p.name); // 输出: Alice
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










