信息发布→ 登录 注册 退出

javascript严格模式是什么_为什么要使用它

发布时间:2025-12-30

点击量:
严格模式是JavaScript中强制代码规范执行的机制,通过报错拦截隐式全局变量、with语句、重复参数、非法delete及模糊this绑定等问题,提升安全性、可读性、性能与调试效率。

JavaScript 严格模式(Strict Mode)是一种让代码在更严格、更规范的环境中执行的机制,它不是新语法,而是一套执行约束规则。启用后,原本可能“悄悄通过”的错误会直接报错,迫使开发者写出更清晰、更安全、更可维护的代码。

严格模式能帮你避开哪些坑

它主动拦截一些容易出错却不易察觉的行为:

  • 禁止隐式创建全局变量(比如忘记用 letconstvar 就直接赋值 a = 10,非严格模式下会挂到 window 上,严格模式直接抛 ReferenceError
  • 禁止使用 with 语句(易引发作用域混乱,且影响性能)
  • 函数参数名不能重复(function fn(a, a) { } 在严格模式下报错)
  • 禁止删除不可配置属性(delete Object.prototype 会报错)
  • this 在非对象调用时不再指向全局对象,而是 undefined(避免意外污染全局)

怎么开启严格模式

只需在脚本顶部或函数体开头写一行字符串字面量:

  • 全局启用:放在 .js 文件第一行或 标签内的首行
    "use strict";
  • 局部启用:只对某个函数生效,写在函数体第一行
    function foo() { "use strict"; /* 这里受严格约束 */ }

注意:它不是语句,是字面量表达式;浏览器不支持时会直接忽略,无副作用。

为什么现在还值得用严格模式

虽然现代开发多用 TypeScript 或构建工具(如 Babel),但严格模式仍有现实价值:

  • 它是 ES5 就确立的基础规范,所有主流浏览器(包括 IE10+)都已完整支持
  • 很多底层库、框架源码仍显式声明 "use strict",理解它有助于读懂原始逻辑
  • 它提前暴露潜在问题——比如未声明变量、静默失败的 delete、含糊的 this 绑定,比等到线上报错再排查成本低得多
  • 为未来语法铺路:它禁用了一些将来可能成为关键字的标识符(如 classenumimport),避免升级时冲突

它带来的实际好处

不只是“更严”,更是更可靠:

  • 安全性提升:限制危险操作,降低被恶意利用的风险(如覆盖内置原型)
  • 可读性增强:强制显式声明、明确作用域边界,团队协作时更容易理解意图
  • 性能优化:引擎能更高效地编译和优化代码(例如避免动态作用域查找)
  • 调试友好:把原本静默失败的地方变成明确报错,缩短定位时间
标签:# javascript  # java  # js  # typescript  # 浏览器  # 工具  # win  # 代码规范  # 作用域  # 为什么  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!