javascript严格模式是什么_如何启用它【教程】

严格模式是JavaScript的限制性变体,通过”use strict”启用,使错误显式化、禁用危险语法、改变this和eval行为,提升代码可预测性与安全性。

javascript严格模式是什么_如何启用它【教程】

JavaScript 严格模式不是新语言,而是对 JavaScript 解析和执行的限制性变体——启用后会抛出更多错误、禁用危险语法、让代码行为更可预测。它不改变语法结构,但改变了 evalthis、变量声明、重复属性等的处理方式。

如何在脚本或函数中启用严格模式

严格模式必须通过字面量字符串 "use strict" 启用,且必须出现在脚本顶部(全局作用域)或函数体第一行(函数作用域)。任何前置语句(包括空行、注释、分号)都会导致失效。

  • 全局启用:
    "use strict";/nconsole.log(this); // 全局中 this 为 undefined
  • 函数级启用:
    function foo() {/n  "use strict";/n  arguments[0] = 123; // 会报错:不能修改 arguments 值/n}
  • 错误写法(被忽略):
    console.log("hello");/n"use strict"; // 不生效

严格模式下哪些常见操作会报错

它把原本静默失败的行为变成显式错误,帮你提前发现隐患:

  • with 语句被完全禁止,使用即 SyntaxError
  • 给只读属性赋值(如 NaN = 1Object.defineProperty(obj, "x", {writable: false}) 后再改)抛出 TypeError
  • 删除不可配置属性(delete obj.x)抛出 TypeError,而非静默返回 false
  • 函数参数名重复(function f(a, a) {})在严格模式下是 SyntaxError
  • arguments.calleearguments.caller 被禁用,访问即 TypeError

严格模式对 thiseval 的影响

这是最容易踩坑的两个点,尤其在封装工具函数或处理回调时:

python学习笔记与简明教程 中文WORD版 2.03MB

python学习笔记与简明教程 中文WORD版 2.03MB

本文档是python学习笔记与简明教程;为什么用Python作为编程入门语言?每种语言都会有它的支持者和反对者。去Google一下“why python”,你会得到很多结果,诸如应用范围广泛、开源、社区活跃、丰富的库、跨平台等等等等,也可能找到不少对它的批评,格式死板、效率低、国内用的人很少之类。不过这些优缺点的权衡都是程序员们的烦恼。作为一个想要学点编程入门的初学者来说,简单才是最重要的。当学C++的同学还在写链表,学Java的同学还在折腾运行环境的时候,学Pyt

下载

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

  • 非严格模式下,独立调用函数时 this 指向全局对象(windowglobalThis);严格模式下为 undefined —— 这意味着 foo() 中的 this.x = 1 会直接报错,而不是意外污染全局
  • eval 在严格模式下不创建新变量到外层作用域:

    "use strict";/neval("var x = 1");/nconsole.log(x); // ReferenceError: x is not defined
  • 严格模式中,eval 内部声明的函数不会提升到外层,也不会泄漏变量名

严格模式不是“向后兼容补丁”,它的约束是硬性的。现代项目普遍默认启用(例如通过打包工具或 ES 模块自动开启),但手写脚本时仍需手动加 "use strict" 并注意位置。最常被忽略的是:模块(.mjstype="module")默认就是严格模式,此时再写 "use strict" 虽无害但冗余。

https://www.php.cn/faq/2024477.html

发表回复

Your email address will not be published. Required fields are marked *