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使用tween.js动画库实现轮播图并且有切换功能

    下面是使用tween.js实现轮播图并且有切换功能的攻略,包含两个示例说明。 1. 引入tween.js库 在HTML文档的标签中添加tween.js库的链接: <head> <script type="text/javascript" src="https://cdnjs.cloudflare.com/aja…

    JavaScript 2023年6月10日
    00
  • JavaScript实现字符串与日期的互相转换及日期的格式化

    JavaScript实现字符串与日期的互相转换及日期的格式化主要包含以下几个步骤: 将日期字符串转换为Date对象 将Date对象转换为字符串 对日期进行格式化 下面将详细阐述这些步骤: 将日期字符串转换为Date对象 可以使用Date.parse()方法将日期字符串转换为Date对象。该方法接收一个日期字符串作为参数,返回相应的毫秒数。 示例代码: con…

    JavaScript 2023年5月27日
    00
  • javascript window.opener的用法分析

    接下来我将详细讲解“JavaScript window.opener的用法分析”。 什么是window.opener window.opener 是一个指向打开当前窗口的父窗口的引用,它可以让我们在新开的窗口中与原来打开该窗口的父窗口进行通讯操作。如果当前窗口不是通过 window.open 打开的而是在当前窗口内直接打开了另一个窗口,此时该属性值为 nul…

    JavaScript 2023年6月11日
    00
  • JavaScript 隐式类型转换规则详解

    JavaScript 隐式类型转换规则详解 在 JavaScript 中,一些操作可能会自动将某些数据类型转换为另一种类型。这种转换称为隐式类型转换。本文将介绍 JavaScript 中的隐式类型转换规则,同时给出示例说明。 类型转换 基本类型 在 JavaScript 中,有六种基本数据类型,分别为: number string boolean null …

    JavaScript 2023年5月28日
    00
  • 16个最流行的JavaScript框架[推荐]

    16个最流行的JavaScript框架[推荐]攻略 介绍 JavaScript框架可以帮助开发者更加高效地创建Web应用程序。在这篇攻略中,我们将介绍16个最流行的JavaScript框架,这些框架功能各异,可以满足不同开发需求。在选择JavaScript框架时,我们建议开发者先考虑项目的需求和特点。以下是我们推荐的16个JavaScript框架: Angu…

    JavaScript 2023年5月18日
    00
  • Javascript Math asin() 方法

    JavaScript中的Math.asin()方法用于返回一个数的反正弦值,即弧度值。该方法接受一个参数,即要计算反正弦值的数值。以下是关于Math.asin()方法的完整攻略,包括两个示例。 JavaScript Math对象的asin()方法 JavaScript Math对象中的asin()方法用于返回一个数的反正弦值,即弧度值。该方法接受一个参数,即…

    JavaScript 2023年5月11日
    00
  • 在JavaScript并非所有的一切都是对象

    在JavaScript中,“一切皆对象”的说法并不准确。事实上,许多数据类型,比如数字、字符串、布尔值、null和undefined等,都不是对象。 数字和字符串不是对象 如果你创建一个数字或字符串,例如: var num = 123; var str = "Hello World"; 那么这些变量不是对象,它们是前述值的字面量。这意味着…

    JavaScript 2023年6月10日
    00
  • JavaScript中合并数组的N种方法

    介绍”JavaScript中合并数组的N种方法” 前言 在JavaScript中,合并两个或多个数组的方式非常多。这篇文章将讨论一些常见的合并数组的方法以及如何使用它们。 方法1: 使用concat()方法 通过使用concat()方法,我们可以将两个或多个数组合并成一个数组。 const arr1 = [1, 2, 3]; const arr2 = [4,…

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