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

严格模式通过”use strict”启用,禁用不安全语法、使未声明变量赋值报错、this在普通函数中为undefined、禁止八进制字面量等歧义语法,并约束eval和arguments行为,提升代码安全性与可维护性。

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

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

变量必须先声明再使用

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

例如:

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

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

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

严格模式(立即报错):

"use strict";
myVar = 42; // Uncaught ReferenceError: myVar is not defined

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

this 不再默认指向全局对象

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

✅ 建议:依赖 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严格模式是什么_它会如何改变你的代码行为?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1544058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 15:35:20
下一篇 2025年12月21日 15:35:29

相关推荐

发表回复

登录后才能评论
关注微信