严格模式通过主动报错暴露隐性问题:未声明变量赋值抛出ReferenceError、this为undefined而非全局对象、禁止对只读属性赋值等;以’use strict’指令启用,兼容旧浏览器,提升代码安全性与可维护性。

javaScript 严格模式是一种让代码在更规范、更安全环境下运行的机制,它通过主动报错来暴露原本被忽略的问题,而不是让错误悄悄过去。
严格模式能拦住哪些“隐形坑”
普通模式下,很多低级错误不会报错,只默默执行,结果难以预料:
- 忘记用 let/const/var 声明就直接赋值(比如
a = 10),会意外创建全局变量;严格模式下直接抛出ReferenceError - 函数里调用时没绑定对象,this 在普通模式下自动变成
window或global,容易污染全局;严格模式下this就是undefined,立刻暴露问题 - 对只读属性赋值、删除变量或函数(
delete x)、使用八进制字面量(如010)等操作,在严格模式下都会明确报错
‘use strict’ 是怎么起作用的
它不是一条语句,而是一条“指令字符串”,写在脚本或函数的最开头位置,浏览器识别后就切换执行规则:
- 写在文件第一行 → 整个脚本启用严格模式
- 写在一个函数体第一行 → 只有这个函数内部受约束
- 老版本浏览器不认识它,会直接忽略,不影响兼容性
为什么现在还值得用
虽然 es6 模块默认启用严格模式,但普通脚本、IIFE、或需要兼容旧环境的代码仍需手动加。它带来的好处很实在:
立即学习“Java免费学习笔记(深入)”;
- 提前发现拼写错误、未声明变量、this 绑定异常等常见疏漏
- 阻止一些不安全操作(如修改不可配置属性),提升运行时稳定性
- 帮助引擎更好优化代码,某些场景下执行更快
- 让代码风格更接近现代标准,为迁移到模块化或 typescript 打基础
基本上就这些。不复杂但容易忽略,加一行就能少踩一堆坑。