跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

javascript的严格模式是什么_它有哪些限制和好处?

严格模式是ES5引入的更严谨JavaScript执行环境,通过"use strict"启用,强制变量声明、禁用八进制字面量、使this为undefined、禁用with和arguments.callee等,提升错误可见性、减少全局污染、增强引擎优化与安全性。 JavaScript 的严格模式是一种更严谨的代码执行环境,从 ES5 开始引入,通过在脚本或函数顶部添加
"use strict"
指令启用。它不是语法糖,而是主动改变 JavaScript 的运行规则,让错误更早暴露、行为更可预测。 严格模式的主要限制 这些限制不是为了刁难开发者,而是为了堵住常见隐患: 变量必须先声明再使用 :直接写
x = 10
会报
ReferenceError
,必须用
let x = 10
或
const x = 10
(
var
也行,但不推荐)。 禁止删除变量、函数或参数 :比如
delete myVar
或
delete myFunc
会抛出
TypeError
。 对象属性和函数参数不能重复 :
{a: 1, a: 2}
或
function(a, a) {}
直接语法报错。 禁用八进制字面量 :像
010
这种以
0
开头的数字不再被识别为八进制,会报错(应改用
0o10
)。
this
不再默认绑定到全局对象 :普通函数中
this
是
undefined
,而不是 浏览器 里的
window
,避免意外污染全局。 禁用
with
语句和
arguments.callee
:
with
容易引发 作用域 混乱,
arguments.callee
影响优化,两者在严格模式下直接不可用。 保留字不能用作变量名 :比如
let
、
static
、
private
、
yield
等未来可能成为关键字的词,现在就禁止赋值使用。 严格模式带来的实际好处 看似多了约束,实则省去大量调试时间,提升长期协作质量: 静默错误变显式报错 :比如给只读属性赋值、对
NaN
赋值、重复声明变量等,在非严格模式下可能“没反应”,严格模式立刻抛异常。 减少意外的全局变量 :未声明变量直接赋值是 JS 最常见的 bug 来源之一,严格模式强制声明,从源头掐断。 提升引擎优化能力 :因为行为更确定(比如
this
不再动态绑定、
arguments
和参数不再自动同步),JS 引擎可以更激进地编译和内联。 增强安全性 :
eval
在严格模式下有独立作用域,它内部声明的变量不会泄露到外部;同时禁止
eval
修改作用域链。 为现代语法铺路 :提前禁用潜在保留字,让代码更容易兼容 ES6+ 新特性,比如
class
、
import
、
super
等在严格模式下已不能当变量名。 怎么开启严格模式 两种方式,效果略有不同: Comet AI 浏览器 下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。 下载 立即学习 “ Java免费学习笔记(深入) ”; 整个脚本启用 :在 . js 文件第一行写
"use strict";
(注意是字符串字面量,不是注释)。 单个函数启用 :在函数体第一行写
"use strict";
,只对该函数生效,不影响外部。 注意:
"use strict"
必须出现在脚本或函数的最开头,前面不能有任何可执行语句,否则会被忽略。 基本上就这些。它不复杂,但容易忽略——尤其在老项目迁移或多人协作时,加一行就能避开一大半低级陷阱。

相关文章