javascript严格模式是什么_如何启用它有什么好处

严格模式是JavaScript的增强约束机制,通过"use strict"启用,使未声明变量赋值等错误显式报错,提升代码质量与可维护性。

JavaScript 严格模式是一种让代码在更规范、更安全环境下执行的机制,它不是新语法,而是对 JavaScript 行为的一套“增强约束”。启用后,原本可能静默失败或产生意外行为的写法会直接报错,帮你提前发现隐患。

严格模式怎么启用

必须用字符串字面量 "use strict"(单引号或双引号均可),且只能出现在作用域的最开头位置:

  • 全局启用:放在整个脚本文件的第一行,整份 JS 都生效
  • 函数级启用:放在某个函数体内的第一行,只对该函数及其内部嵌套函数起作用
  • 模块(import/export)脚本默认就是严格模式,不用手动加
  • 不能写在条件语句里、不能在注释或代码之后出现,否则会被忽略

严格模式带来的关键变化

它不是“加功能”,而是“收紧规则”,让错误暴露得更早、更明确:

  • 给未声明变量赋值会报 ReferenceError,不再偷偷创建全局变量
  • 函数参数名重复(如 function(a, a) {})直接报语法错误
  • 禁止使用 delete 删除变量、函数或参数名
  • 普通函数中 this 不再默认指向全局对象,而是 undefined
  • eval 无法向外部作用域注入变量,作用域更干净
  • 禁用八进制字面量(如 010)、保留字(如 classsuper)不能当变量名

为什么建议启用严格模式

它不改变语言核心能力,但显著提升代码质量与可维护性:

  • 减少低级错误,比如拼错变量名、漏写 var/let/const
  • 避免隐式全局污染,降低模块间意外干扰风险
  • 帮助引擎更好优化,某些场景下运行更快
  • 与现代语法(如模块、类、箭头函数)行为更一致,降低学习和迁移成本
  • 所有主流浏览器(IE10+)都支持,兼容性无压力

新项目从第一行就加上 "use strict",老项目也可以逐步在函数内启用,成本低、收益高。