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

JavaScript 严格模式(Strict Mode)是一种让代码运行在更安全、更规范环境中的机制。它通过在脚本或函数顶部添加 "use strict"; 指令启用,会禁用一些不安全、易出错或已被淘汰的语法和行为,同时让某些静默错误变为显式报错。
在非严格模式下,给未声明的变量赋值会自动创建一个全局变量,这容易引发意外污染和难以排查的 bug。严格模式下,这种操作会直接抛出 ReferenceError。
例如:
非严格模式(不报错,但危险):myVar = 42; // 静默创建全局变量 myVar
立即学习“Java免费学习笔记(深入)”;
严格模式(立即报错):"use strict";<br>myVar = 42; // Uncaught ReferenceError: myVar is not defined
✅ 建议:始终用 let、const 或 var 显式声明变量。
在非严格模式的普通函数中,如果函数独立调用(如 foo()),其内部的 this 会指向全局对象(浏览器中是 window)。严格模式下,此时 this 为 undefined,避免意外修改全局状态。
✅ 建议:依赖 this 的函数应明确绑定上下文(如用 call、bind 或箭头函数),或确保在对象方法中调用。
严格模式会拒绝以下写法:
010)→ 改用 0o10
function foo(a, a) { })→ 会报 SyntaxError
NaN = 5)→ 报 TypeError
delete Object.prototype)→ 报 TypeError
这些限制帮你提前发现潜在问题,而不是等到运行时才暴露。
严格模式下:
• eval 不再能向外部作用域注入变量;
• arguments 不再与形参自动同步(修改 arguments[0] 不影响对应参数值);
• arguments 和 eval 不能作为变量名或函数名使用。
✅ 这减少了隐式耦合,让代码逻辑更可预测,也利于引擎优化。
严格模式不是“新语言”,而是现有 JavaScript 的增强约束层。现代开发中,模块(.mjs 文件或 ES 模块)默认启用严格模式,无需手动加 "use strict"。即使写普通脚本,也建议主动启用——它不会改变正确代码的行为,只会帮你避开常见陷阱。
以上就是javascript严格模式是什么_它会如何改变你的代码行为?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号