JavaScript 的严格模式(Strict Mode)是一种让代码在更严格、更安全的环境中运行的机制。它通过在脚本或函数顶部添加
指令启用,会改变 JavaScript 引擎对代码的解析和执行方式,禁用一些不安全、易出错或已被废弃的语法和行为。
防止意外创建全局变量
在非严格模式下,给未声明的变量赋值会自动创建一个全局变量,这容易引发命名冲突和难以追踪的 bug。
非严格模式:
→ 静默创建
(
浏览器
中)
严格模式:
→ 抛出
,强制开发者先用
、
或
声明
禁止静默失败的操作
很多在非严格模式下“看似成功”但实际无效的操作,在严格模式下会明确报错,提升调试效率。
给只读属性赋值(如
后再改
)→ 抛出
删除不可配置属性(
)→ 抛出
,而非返回
八进制字面量(如
)被禁止,避免因前导零引发的歧义
限制含糊或危险的语法
严格模式移除了容易导致误解的语言特性,推动代码更清晰、可预测。
Comet AI 浏览器
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
下载
立即学习
“
Java免费学习笔记(深入)
”;
语句被完全禁止,因为它使
作用域
链变得不可静态分析
函数参数名不能重复(
→
)
不再与形参绑定(修改
不再影响参数变量),避免隐式耦合
在非对象上下文中不再指向全局对象(如普通函数调用中
为
),减少意外覆盖全局的情况
为未来语法铺路
严格模式是 ES5 引入的过渡机制,许多新标准(如 ES6+)默认采用严格模式的行为逻辑。启用它有助于提前发现与现代 JavaScript 不兼容的问题,比如保留字作为标识符(
、
、
等)在严格模式下直接报错,避免升级时踩坑。
"use strict";myVar = 42;window.myVarmyVar = 42;ReferenceErrorletconstvarObject.defineProperty(obj, 'x', { writable: false })obj.xTypeErrordelete obj.propTypeErrorfalse010withfunction foo(a, a) { }SyntaxErrorargumentsarguments[0]thisthisundefinedletstaticpublic