JavaScript 的严格模式(Strict Mode)是一种让代码在更严格、更安全的环境中运行的机制。它通过在脚本或函数顶部添加 "use strict"; 指令启用,会改变 JavaScript 引擎对代码的解析和执行方式,禁用一些不安全、易出错或已被废弃的语法和行为。
在非严格模式下,给未声明的变量赋值会自动创建一个全局变量,这容易引发命名冲突和难以追踪的 bug。
myVar = 42; → 静默创建 window.myVar(浏览器中)myVar = 42; → 抛出 ReferenceError,强制开发者先用 let、const 或 var 声明很多在非严格模式下“看似成功”但实际无效的操作,在严格模式下会明确报错,提升调试效率。
Object.defineProperty(obj, 'x', { writable: false }) 后再改 obj.x)→ 抛出 TypeError
delete obj.prop)→ 抛出 TypeError,而非返回 false
010)被禁止,避免因前导零引发的歧义严格模式移除了容易导致误解的语言特性,推动代码更清晰、可预测。
with 语句被完全禁止,因为它使作用域链变得不可静态分析function foo(a, a) { } → SyntaxError)arguments 不再与形参绑定(修改 argumen
ts[0] 不再影响参数变量),避免隐式耦合this 在非对象上下文中不再指向全局对象(如普通函数调用中 this 为 undefined),减少意外覆盖全局的情况严格模式是 ES5 引入的过渡机制,许多新标准(如 ES6+)默认采用严格模式的行为逻辑。启用它有助于提前发现与现代 JavaScript 不兼容的问题,比如保留字作为标识符(let、static、public 等)在严格模式下直接报错,避免升级时踩坑。