登录
首页 >  文章 >  前端

严格模式是什么?如何避免错误

时间:2026-01-13 16:18:51 151浏览 收藏

小伙伴们对文章编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《JavaScript严格模式是什么?如何避免常见错误》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

严格模式通过显式报错暴露隐患:未声明变量赋值、undefined调用方法、重复参数名、只读属性赋值、with语句均抛出错误;需用"use strict"双引号置于顶部或函数首行启用。

什么是javascript的严格模式_它如何帮助避免常见的编码错误

JavaScript 严格模式("use strict")不是一种新语言,而是一套更严格的语法和错误检查规则——它不会修复你的代码,但会把原本静默失败的问题变成明确报错,帮你提前发现隐患。

strict mode 下哪些错误会被显式抛出

不加 "use strict" 时,很多错误被忽略或自动“修复”,比如给未声明变量赋值会意外创建全局变量;而开启后,这类操作直接抛出 ReferenceError

  • undefined 上调用方法(如 foo.bar(),其中 fooundefined)→ 报 TypeError,而不是静默返回 undefined
  • 重复的函数参数名(如 function f(a, a) { })→ 报 SyntaxError(仅在函数顶部启用时生效)
  • 对只读属性赋值(如 Object.defineProperty(obj, 'x', { value: 1, writable: false }) 后再写 obj.x = 2)→ 报 TypeError
  • 使用 with 语句 → 报 SyntaxError(该语句本身已废弃且极易引发作用域混乱)

如何正确启用 strict mode

必须是字面量字符串 "use strict",且必须出现在脚本顶部或函数体第一行(前面不能有其他语句,包括注释也不行);否则无效。

  • 整个脚本启用:
    "use strict";
    x = 3.14; // ReferenceError: x is not defined
  • 仅函数内启用:
    function doSomething() {
      "use strict";
      y = 42; // ReferenceError
    }
  • 注意:模块(.mjstype="module" 的 script)默认就是严格模式,无需手动加
  • 不要写成 'use strict'(单引号)——虽然大多数引擎也认,但规范要求双引号,为兼容性建议统一用双引号

严格模式禁用或改变的行为

它不只是“报错更多”,还移除了某些容易误用的特性,让行为更可预测:

  • this 在非对象上下文中不再绑定到全局对象(如普通函数调用中 thisundefined,而非 windowglobalThis
  • arguments 不再与命名参数保持别名同步(修改 arguments[0] 不再影响形参变量)
  • 禁止八进制字面量(如 010),改用 0o10;否则报 SyntaxError
  • eval 不能在当前作用域声明变量或函数(避免污染外层作用域)

真正关键的不是“要不要开”,而是理解哪些错误被暴露了——比如你依赖 with 或静默创建全局变量,那开启后必然崩;这时候该重构代码,而不是关掉 strict mode。

好了,本文到此结束,带大家了解了《严格模式是什么?如何避免错误》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>