启用"use strict"能显著提升JavaScript代码质量,主要体现在提前暴露错误、限制易错写法、增强可维护性三方面;它是运行时安全检查开关,使未声明变量赋值、重复属性名、with语句等行为显式报错而非静默失败。

启用 "use strict" 能显著提升 JavaScript 代码质量,主要体现在提前暴露错误、限制易错写法、增强可维护性三方面。它不是语法糖,而是运行时的“安全检查开关”,让潜在问题在开发阶段就浮出水面。
避免静默失败,让错误显性化
严格模式下,许多原本会“悄悄出错”的行为直接抛出异常,便于快速定位问题:
- 给未声明变量赋值(
foo = 42)不再自动创建全局变量,而是报ReferenceError - 删除不可配置属性(如
delete Object.prototype)抛出TypeError,而非静默忽略 - 对象字面量中重复属性名(
{a: 1, a: 2})在严格模式下是语法错误,阻止逻辑被意外覆盖
禁止危险或模糊的语法惯用法
一些被广泛使用但语义不清、容易引发 bug 的写法,在严格模式中被明确禁止:
- 禁用
with语句——它破坏作用域链,导致性能下降且难以调试 - 函数参数名不能重复(
function foo(a, a) {}报语法错误),避免参数覆盖带来的逻辑歧义 -
arguments不再与形参自动绑定(修改arguments[0]不再影响a),消除隐式耦合
增强代码可读性与可维护性
严格模式促使开发者写出更清晰、更符合现代规范的代码:
立即学习“Java免费学习笔记(深入)”;
- 禁用八进制字面量(
010)等易混淆语法,统一使用0o10明确表达意图 -
this在非对象上下文中不再指向全局对象(如普通函数调用中为undefined),减少因this绑定错误导致的隐蔽 bug - 支持更早发现不兼容特性(如某些引擎对严格模式的解析更接近标准),为未来升级铺路
不复杂但容易忽略:只需在脚本顶部或函数体首行添加 "use strict"; 即可启用。建议新项目默认开启,并逐步为旧模块补充——它不改变正确代码的行为,只让错误更快显现。










