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

yizhihongxing

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日

相关文章

  • bootstrapValidator.min.js表单验证插件

    下面是关于bootstrapValidator表单验证插件的完整攻略。 Bootstrap Validator 概述 Bootstrap Validator 是一个用来为表单组件添加验证的 jQuery 插件。它使用了 Twitter Bootstrap 的样式,并集成了 jQuery 的特性,可以非常方便地为表单添加验证规则。 安装步骤 首先需要下载 Bo…

    JavaScript 2023年6月10日
    00
  • js实现各种复制到剪贴板的方法(分享)

    下面是js实现各种复制到剪贴板的方法的攻略: 一、前置知识 为了实现复制到剪贴板的功能,必须要掌握以下前置知识: Clipboard API:一种新的Web API,提供了操作剪贴板的标准接口,并且被主流浏览器所支持。 execCommand()方法:一种旧的Web API,已经被废弃,但是在Clipboard API出现之前是实现复制到剪贴板的常用方法。 …

    JavaScript 2023年6月11日
    00
  • JavaScript通过字符串调用函数的实现方法

    JavaScript可以通过字符串调用函数的方法称为函数调用方法,也就是将字符串转化成函数名称并直接调用对应的函数。下面是一些实现方法的示例说明: 1. 使用eval()函数实现字符串调用函数 使用eval()函数可以将字符串解析成JS代码并执行,从而实现字符串调用函数的方法。 // 定义需要调用的函数 function greeting(message) …

    JavaScript 2023年5月28日
    00
  • es6 字符串String的扩展(实例讲解)

    下面是关于“ES6 字符串 String 的扩展(实例讲解)”的完整攻略: ES6 字符串 String 的扩展 ES6 对字符串 String 类型进行了很多扩展,本文中我们将分别介绍模板字符串、标签模板以及字符串相关实例方法。 模板字符串 模板字符串是ES6新引入的一种字符串,可以在其中插入变量,同时还可以进行字符串拼接,并且支持换行。 字符串拼接 使用…

    JavaScript 2023年5月28日
    00
  • 微信小程序保持session会话的方法

    下面我将为你详细介绍微信小程序保持 session 会话的方法。 什么是 session session 是指客户端和服务器之间的交互状态,可以理解为身份验证或登录状态的一种维持方式。常见的维持 session 的方法有 cookie 和 token。 微信小程序 session 微信小程序中,可以通过 wx.request 方法向服务器发送请求并维持 se…

    JavaScript 2023年6月11日
    00
  • js 创建对象 经典模式全面了解

    JS创建对象-经典模式 在JavaScript中,对象是实例化一个类的一种方式。JS有很多种方式来创建对象,经典模式是其中一种,也是​​最基础的一种,但是在ES6中已经有了更加方便的方式来实现创建对象。 经典方式 那么什么是经典方式呢?经典方式指的是使用构造函数来实现创建对象。 构造函数创建对象 构造函数实际上就是普通的JS函数,在使用构造函数创建对象的时候…

    JavaScript 2023年5月27日
    00
  • 关于IE7 IE8弹出窗口顶上

    针对IE7 和IE8浏览器中弹出窗口顶部被隐藏的问题,一般可以通过修改CSS属性来解决。以下是详细的攻略: 1. 理解问题 在IE7和IE8中,当使用弹出窗口(window.open)打开一个新窗口时,新窗口的顶部可能会被浏览器工具栏(如地址栏和标签栏)所遮挡,导致用户无法看到完整的窗口顶部内容,这对用户使用造成不便。 2. 解决方法一:修改弹出窗口的CSS…

    JavaScript 2023年6月11日
    00
  • js实现点击注册按钮开始读秒倒计时的小例子

    我来为您详细讲解实现“js实现点击注册按钮开始读秒倒计时的小例子”的完整攻略: 1. 准备工作 在开始实现 JavaScript 读秒倒计时功能前,我们需要准备一些基本的 HTML 结构和样式。 <!DOCTYPE html> <html lang="en"> <head> <meta chars…

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