JavaScript起点(严格模式深度了解)

JavaScript起点(严格模式深度了解)

什么是严格模式?

严格模式是 ECMAScript 5 引入的一种运行模式,主要作用是弥补了 JavaScript 语言本身一些缺陷,提高了代码的运行效率,增强了安全性。通过开启严格模式,可以使 JavaScript 代码更加规范、更加安全、更加高效。

开启严格模式有两种方式:

  • 在全局环境中使用 'use strict';
  • 在函数体内部使用 'use strict';

全局使用语法

'use strict';
// 这里是严格模式下的代码块

函数内部使用语法

function someFunction() {
  'use strict';
  // 这里是严格模式下的代码块
}

一旦开启了严格模式,就不能再返回非严格模式。也就是说,在使用严格模式之后,整个脚本都将在严格模式下运行,无法再切换回之前的非严格模式。

严格模式下的规则

在严格模式下,以下行为被禁止:

  • 不允许使用 with 语句;
  • 不允许未声明的变量自动成为全局变量;
  • 不允许删除未定义的变量;
  • 函数参数不能有重复的名称;
  • 禁止八进制字面量;
  • 禁止对只读属性赋值;
  • 对象不允许有重复的属性名;
  • 函数中的 this 不再指向全局对象;
  • 不允许在函数内使用 eval();

严格模式下的规则有很多,但它们的目的都相同,那就是为了让 JavaScript 代码更加规范、高效、安全。下面通过例子来演示几个严格模式下被禁止的语法。

1. 不允许使用 with 语句

with 语句是 JavaScript 语言中一个容易引起歧义的语句,可能会导致难以调试的问题。在严格模式下,with 语句被禁止使用。

'use strict';
let obj = {a: 1, b: 2};
// 正常情况下可以这样使用对象属性
console.log(obj.a, obj.b);
// 但在严格模式下不能使用 with 语句
with (obj) {
  console.log(a, b); // Uncaught SyntaxError: Strict mode code may not include a with statement
}

2. 函数参数不能有重复的名称

在严格模式下,函数的形参命名冲突将会被抛出异常,因此函数参数不能有重复的名称。

'use strict';
// 正常情况下可以这样定义函数
function sum(a, b) {
  return a + b;
}
// 但在严格模式下定义函数参数名称不能重复
function sum(a, a) {
  return a + a;
}
// 在严格模式下会报错: SyntaxError: Duplicate parameter name not allowed in this context

总结

严格模式是 ECMAScript 5 中为 JavaScript 进行一系列操作规定的模式,在这个模式下,开发者需要遵守更多的规范和规则,从而使代码更加规范、高效和安全。开发者可以通过全局或函数内部的方式来开启严格模式,常见的禁止行为包括了使用 with 语句、对只读属性赋值、禁止在函数内使用 eval() 等等。在实际编码中,建议开启严格模式来保证代码的高质量。

以上就是“JavaScript起点(严格模式深度了解)”的完整攻略,内容详实,希望对您有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript起点(严格模式深度了解) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期

    先来解释一下获取日期的方式:可以通过 JS 内置对象 Date() 进行日期的获取,以下是获取日期的方法: getFullYear():获取年份 getMonth():获取月份(注意:返回值是0-11,0代表一月,11代表十二月) getDate():获取日(注意:返回值是1-31之间的整数) getDay():获取星期几(注意:返回值是0-6,0代表星期日…

    JavaScript 2023年5月27日
    00
  • 分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容

    这里是分享自定义的console类让JS调试代码更方便的攻略: 1. 创建一个自定义的Console类 创建一个可以封装原生console使其在不同浏览器环境下具有兼容性的类,示例代码如下: class CustomConsole { constructor() { this.logHistory = []; this.registerConsoleMeth…

    JavaScript 2023年6月11日
    00
  • JavaScript中一些特殊的字符运算

    下面是关于“JavaScript中一些特殊的字符运算”的完整攻略。 前言 在JavaScript中,一些特殊的字符可以进行运算,这些运算可以实现很多有趣的功能,但也需要我们仔细地了解它们的使用方法。本文将详细讲解这些特殊字符在JavaScript中的使用方法,并给出两条示例说明。 章节 1. 逗号运算符(,) 逗号运算符可以用于将多个表达式连接在一起,并且最…

    JavaScript 2023年5月28日
    00
  • JavaScript获取当前时间向前推三个月的方法示例

    获取当前时间向前推三个月可以使用JavaScript中的Date对象和相关方法来实现。下面是具体的攻略: 获取当前时间 使用JavaScript中的Date对象可以获取当前的时间。代码如下: var currentTime = new Date(); console.log(currentTime); 输出结果如下: Sun Jul 11 2021 15:4…

    JavaScript 2023年5月27日
    00
  • javascript的函数、创建对象、封装、属性和方法、继承

    下面我将详细讲解JavaScript中函数、创建对象、封装、属性和方法、继承的完整攻略,并且会给出至少两个示例。 函数 函数的定义 函数是一段被封装起来的可复用代码块。在 JavaScript 中,函数可以通过 function 关键字来定义。函数定义的一般语法格式为: function functionName(param1, param2, …){ …

    JavaScript 2023年5月27日
    00
  • javascript中导出与导入实现模块化管理教程

    以下是对“javascript中导出与导入实现模块化管理教程”的完整攻略: JavaScript中导出与导入实现模块化管理教程 为什么需要模块化? 在编写JavaScript代码时,代码量可能会变得非常庞大和复杂,由于所有逻辑都在同一个js文件中,导致代码结构混乱,代码复用性不高。 随着代码量的增大,我们会面临着不好维护的代码库、命名冲突、团队开发、性能和可…

    JavaScript 2023年5月27日
    00
  • Dwr3.0纯注解(纯Java Code配置)配置与应用浅析一之零配置文件化

    Dwr3.0纯注解(纯Java Code配置)配置与应用浅析一之零配置文件化 什么是Dwr3.0纯注解配置 Dwr(Direct Web Remoting) 是一种轻量级的远程框架,它可以实现web端的无刷新操作、异步处理,极大地提高了web应用的用户体验。 需要说明的是,这里提到的Dwr3.0纯注解配置,与使用传统的dwr.xml配置文件的方式相对。 Dw…

    JavaScript 2023年5月28日
    00
  • JavaScript几种数组去掉重复值的方法推荐

    对于JavaScript几种数组去掉重复值的方法推荐,我为您制作了详细攻略如下: 方案介绍 在JavaScript中,我们有许多不同的方法可以将数组中的重复项去除,以下是一些推荐的方法: 1. 使用 Set Set是ES6新增的数据类型,Set的特点是不允许出现重复的元素,可以很好地用来去除数组中的重复项。 let arr = [1, 2, 2, 3, 3,…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部