首页 > web前端 > js教程 > 正文

javascript严格模式是什么_它会如何改变你的代码行为?

幻影之瞳
发布: 2025-12-19 21:39:08
原创
811人浏览过
严格模式通过"use strict"启用,禁用不安全语法、使未声明变量赋值报错、this在普通函数中为undefined、禁止八进制字面量等歧义语法,并约束eval和arguments行为,提升代码安全性与可维护性。

javascript严格模式是什么_它会如何改变你的代码行为?

JavaScript 严格模式(Strict Mode)是一种让代码运行在更安全、更规范环境中的机制。它通过在脚本或函数顶部添加 "use strict"; 指令启用,会禁用一些不安全、易出错或已被淘汰的语法和行为,同时让某些静默错误变为显式报错。

变量必须先声明再使用

在非严格模式下,给未声明的变量赋值会自动创建一个全局变量,这容易引发意外污染和难以排查的 bug。严格模式下,这种操作会直接抛出 ReferenceError

例如:

非严格模式(不报错,但危险):

myVar = 42; // 静默创建全局变量 myVar

立即学习Java免费学习笔记(深入)”;

严格模式(立即报错):

"use strict";<br>myVar = 42; // Uncaught ReferenceError: myVar is not defined
登录后复制

✅ 建议:始终用 letconstvar 显式声明变量。

this 不再默认指向全局对象

在非严格模式的普通函数中,如果函数独立调用(如 foo()),其内部的 this 会指向全局对象(浏览器中是 window)。严格模式下,此时 thisundefined,避免意外修改全局状态。

Chatbase
Chatbase

从你的知识库中构建一个AI聊天机器人

Chatbase 117
查看详情 Chatbase

✅ 建议:依赖 this 的函数应明确绑定上下文(如用 callbind 或箭头函数),或确保在对象方法中调用。

禁止使用被废弃或有歧义的语法

严格模式会拒绝以下写法:

  • 八进制字面量(如 010)→ 改用 0o10
  • 重复的函数参数名(如 function foo(a, a) { })→ 会报 SyntaxError
  • 对只读属性赋值(如 NaN = 5)→ 报 TypeError
  • 删除不可删除的属性(如 delete Object.prototype)→ 报 TypeError

这些限制帮你提前发现潜在问题,而不是等到运行时才暴露。

eval 和 arguments 行为更可控

严格模式下:
eval 不再能向外部作用域注入变量;
arguments 不再与形参自动同步(修改 arguments[0] 不影响对应参数值);
argumentseval 不能作为变量名或函数名使用。

✅ 这减少了隐式耦合,让代码逻辑更可预测,也利于引擎优化。

严格模式不是“新语言”,而是现有 JavaScript 的增强约束层。现代开发中,模块(.mjs 文件或 ES 模块)默认启用严格模式,无需手动加 "use strict"。即使写普通脚本,也建议主动启用——它不会改变正确代码的行为,只会帮你避开常见陷阱。

以上就是javascript严格模式是什么_它会如何改变你的代码行为?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号