严格模式是通过"use strict"字符串启用的执行规则开关,需置于文件或函数首行且格式正确,能使隐式全局变量、重复参数等错误提前暴露。

严格模式不是新语法,而是一行能立刻改变 JavaScript 执行规则的开关——"use strict"。它让原本“悄悄通过”的错误(比如漏写 let 就直接赋值)当场报错,而不是污染全局、掩盖问题、等线上崩了才暴露。
怎么启用才真正生效?
看似简单,但写错位置就等于没开:
- 全局启用:必须是
.js文件或标签内的第一行有效语句,前面只能有注释或空行,不能有console.log()或任何表达式 - 函数级启用:必须是函数体内的第一行,且不能被包裹在
if、for等块中(if (true) { "use strict"; }无效) -
"use strict"必须是字符串字面量——引号、大小写、拼写全要对,'use strict'也行,但use strict(没引号)或"use strict";(分号后换行再写代码)会失效
"use strict"; x = 10; // ReferenceError: x is not defined
为什么现在还值得手动加?
ES6 模块(import/export)、class、箭头函数这些现代语法默认启用严格模式,但很多场景仍需你亲手加:
- 独立的
.js脚本(比如老项目里的工具函数、统计埋点脚本) - 动态生成的代码(如用
eval("")或拼接字符串执行逻辑) - 构建工具未覆盖的 IIFE 包裹代码(Webpack/Vite 合并多个模块后,
"use strict"若不在合并后文件顶部,就失效) - 调试遗留代码时,加一行就能快速暴露
this绑定错误或隐式全局变量
哪些错误会从“静默”变“炸裂”?
这是严格模式最实在的价值——把模糊行为变成明确报错:
大高朋团购系统是一套Groupon模式的开源团购程序,开发的一套网团购程序,系统采用ASP+ACCESS开发的团购程序,安装超简,功能超全面,在保留大高朋团购系统版权的前提下,允许所有用户免费使用。大高朋团购系统内置多种主流在线支付接口,所有网银用户均可无障碍支付;短信发送团购券和实物团购快递发货等。 二、为什么选择大高朋团购程序系统? 1.功能强大、细节完善 除了拥有主流团购网站功能,更特别支
立即学习“Java免费学习笔记(深入)”;
-
undeclared = "oops"→ReferenceError(不再挂到window上) -
function foo(a, a) { }→SyntaxError(参数重复直接不解析) -
delete Object.prototype→TypeError(不可删属性不再假装成功) -
with(obj) { }→SyntaxError(直接禁用,避免作用域混乱) - 普通函数调用:
foo()中的this从window变成undefined,防止误改全局状态
"use strict";
function test() {
console.log(this); // undefined(浏览器中)
}
test();
最容易被忽略的是:严格模式不是“越严越好”,而是“让错误早露脸”。它不改变功能,只改变错误出现的时机和方式。如果你的代码在非严格模式下靠“容错”跑通,那加了 "use strict" 后大概率会立刻报错——这不是模式的问题,是代码本来就有隐患。










