严格模式是JavaScript中提升代码健壮性的运行模式,通过"use strict"启用,禁止隐式全局变量、重复参数、with语句等危险操作,并使函数中this为undefined,增强错误提示与可维护性。
严格模式(Strict Mode)是 JavaScript 中的一种运行模式,它让引擎以更严格、更规范的方式解析和执行代码,主动禁用一些容易出错或不推荐使用的语法和行为。启用后,原本可能静默失败的操作会抛出明确错误,从而帮助开发者及早发现潜在问题,提升代码健壮性和可维护性。
严格模式可以通过两种方式启用:
本顶部添加 "use strict";(整个文件生效)注意:必须是字符串字面量,且必须出现在脚本或函数的最开始位置(前面不能有其他语句,包括注释也不行)。
它会显式报错,而不是容忍错误,比如:
x = 10 会隐式创建全局变量;严格模式下直接报 ReferenceError
function foo(a, a) {} 在严格模式下是语法错误delete Object.prototype 会抛出 TypeError
010(旧式写法)在严格模式下无效,需改用 0o10
with 语句:因其影响作用域链、降低性能且易引发歧义this 的影响在非严格模式下,函数中独立调用的 this 指向全局对象(浏览器中是 window);严格模式下则为 undefined。这能避免意外修改全局对象,也使箭头函数、call/apply 等行为更可预测。
例如:
function foo() { return this; }
foo(); // 非严格:window;严格:undefined
严格模式本身不提供新功能,但通过“提前拦截错误”,起到类似静态检查的作用:
var/let/const 导致的隐蔽 bugimport/export)天然兼容——模块代码默认启用严格模式现代项目基本都默认启用严格模式,尤其在使用构建工具(Webpack、Vite)或 TypeScript 时,无需手动添加,但理解其机制有助于读懂报错和设计更可靠的逻辑。