严格模式下函数独立调用时this为undefined,无需额外操作;需在函数首行或脚本顶部加"use strict",ES模块默认启用;箭头函数无this,继承外层。

严格模式下,函数独立调用时 this 本就不会指向全局对象——它直接是 undefined,这本身就是一种“禁止默认指向全局”的机制。你不需要额外操作,只要启用严格模式,就自动生效。
确保函数运行在严格模式中
严格模式必须显式开启,且对作用域生效。关键点是:函数体内部需有 "use strict" 指令,或整个脚本/模块处于严格模式。
- 单个函数启用:在函数第一行写
"use strict" - 整个脚本启用:在 .js 文件顶部(无前置代码)加
"use strict" - ES 模块(.mjs 或 import 场景)默认就是严格模式,无需手动声明
避免意外退出严格模式
以下情况会让 this 回退到非严格行为,需避开:
- 函数内没写
"use strict",且它被非严格上下文调用(如普通 script 标签中的函数) - 通过
eval()执行的字符串代码未开启严格模式 - 使用
Function构造器创建函数时,未在参数中传入"'use strict'; ..."
验证 this 是否为 undefined
写个小测试即可确认:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
"use strict";
function checkThis() {
console.log(this === undefined); // true
}
checkThis();
如果输出 true,说明已生效;若为 false,说明当前不在严格模式下。
注意箭头函数的特殊情况
箭头函数没有自己的 this,它继承外层词法作用域的 this 值。所以即使在严格模式下,它的 this 也不是 undefined,而是由外层决定。如需彻底隔离,应使用普通函数并确保其处于严格模式。

















