Javascript的严格模式strict mode详细介绍

Javascript的严格模式(Strict Mode)是ES5引入的一种新模式。它主要针对一些不规范的代码加强了规范性,以避免开发中一些隐形错误、提高代码质量和安全性。在Javascript中启用严格模式的方法是在代码开头添加"use strict";即可。

使用严格模式,将会导致Javascript的一些默认行为发生变化。

下面,我们将逐一讲解在使用Javascript严格模式下发生变化的几个方面:

变量声明

在非严格模式的Javascript中,如果我们不使用var或let等关键字来声明变量,那么Javascript会把这个变量默认为全局变量,而严格模式下的Javascript则不允许此种情况的发生。

示例1:

function test() {
    x = 10;
    console.log(x);
}
test();

在非严格模式下,x变量默认为全局变量,并输出10;而在严格模式下,此种方式会抛出一个Uncaught ReferenceError错误,因为x变量未定义。

示例2:

"use strict";
function test() {
    x = 10;
    console.log(x);
}
test();

在使用严格模式下,x变量未定义,会抛出一个ReferenceError错误。

严格模式下的函数

在严格模式下,函数的一些行为与非严格模式下会有所不同。

  1. 在非严格模式下,如果某个函数在全局作用域中被调用,那么其中的this变量默认指向全局对象(window);而在严格模式下,相同情况下,this默认为undefined,从而避免了一些潜在的问题。

示例3:

function test() {
    console.log(this);
}
test();

在非严格模式下,将输出window对象;而在严格模式下,将输出undefined

  1. 在严格模式下,不允许一个函数内部this指向全局对象,除非通过函数的调用或者apply()、bind()、call()方法将this指向其他对象。

示例4:

"use strict";
function test() {
    console.log(this);
}
test();  // 输出undefined
test.call("Hello");  // 输出"Hello"
只读属性

在严格模式下,对只读的属性进行赋值操作会抛出一个TypeError错误。

示例5:

"use strict";
var obj = {
    prop : 10
}
Object.defineProperty(obj, "prop", {writable : false});

obj.prop = 20;  // TypeError: Cannot assign to read only property 'prop' of object '#<Object>'

在这个例子中,我们定义了obj对象的prop属性为只读属性,但是在严格模式下尝试修改它的值,会抛出TypeError错误。

上面的这些仅仅是严格模式的一些变化,它不限于此。事实上,在严格模式下,还会有很多关键字、方法、特性都发生了变化。因此,使用Javascript严格模式能够更好的区分变量和函数作用域、提高代码健壮性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript的严格模式strict mode详细介绍 - Python技术站

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

相关文章

  • 详解javascript void(0)

    标题:详解javascript void(0) 简介 void(0) 是一个JavaScript语言中的操作符,这个方式可以用来执行一段代码却不返回任何值。通常使用 void(0) 可以防止页面被重定向,即不会跳转到新的页面。 使用方法 常见的使用场景: 在 href 属性中使用 void(0): <a href="javascript:vo…

    JavaScript 2023年5月28日
    00
  • json格式的Ajax提交示例代码

    当我们需要使用Ajax提交数据到后台服务器,通常我们会使用JSON格式来传输数据。以下是JSON格式的Ajax提交示例代码的完整攻略: 步骤1:引入jQuery库 首先,我们需要在HTML文件中引入jQuery库文件,代码如下: <script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.…

    JavaScript 2023年6月10日
    00
  • 17个JavaScript 单行程序

    JavaScript 是一门非常重要的编程语言,具有广泛的应用。在网上,有很多有趣的JavaScript 单行程序,它们虽然只有一行代码,但是实现的功能很有趣。接下来,我来为大家详细讲解 “17个JavaScript 单行程序”的完整攻略,希望对大家学习JavaScript编程有所帮助。 先列出这 17 个单行程序: 在控制台输出一个笑脸 ? 反转字符串 统…

    JavaScript 2023年5月18日
    00
  • js实现文件流式下载文件方法详解及完整代码

    那我来详细讲解一下“js实现文件流式下载文件方法详解及完整代码”的完整攻略吧。 1. 前言 文件下载是许多 Web 应用程序的常见需求之一,而在前端技术中实现文件下载的方式有很多种,其中一种可以称为文件流式下载。本文将详细介绍如何使用 JavaScript 实现文件流式下载,并提供代码示例。 2. 实现思路 实现文件流式下载的基本思路是将文件分成多个片段进行…

    JavaScript 2023年5月27日
    00
  • JS实现获取来自百度,Google,soso,sogou关键词的方法

    获取来自百度、Google、soso、sogou等搜索引擎的关键词,可以通过以下步骤进行: 获取referral信息: 搜索引擎会将搜索关键词作为URL参数传递给你的网站,这些参数通常是在HTTP Referrer中传递的。因此,可以通过获取HTTP Referrer来获取搜索关键词。在JavaScript中,可以通过以下代码获取HTTP Referrer信…

    JavaScript 2023年6月10日
    00
  • JS实现适合于后台使用的动画折叠菜单效果

    首先,为了实现动画折叠菜单效果,我们需要使用JavaScript和CSS。 第一步:HTML结构 首先,我们需要在HTML中创建折叠菜单的基本结构。对于每个一级菜单,我们都要创建一个<div>元素,并将其内容包含在一个<a>元素中。在这个链接标记后面,我们要创建一个空的<ul>元素,用于存放子菜单。我们还需要为每个菜单项添…

    JavaScript 2023年6月11日
    00
  • JavaScript里实用的原生API汇总

    JavaScript里实用的原生API汇总 什么是原生API? 在 JavaScript 中,原生 API 是指可以直接在浏览器中使用的 JavaScript 函数和对象。它们已经被封装到浏览器中了,可以直接使用,无需安装额外的库或框架。 以下是一些常见的原生 API: DOM API:用于操作文档对象模型(DOM)的 API。 BOM API:用于操作浏览…

    JavaScript 2023年5月28日
    00
  • js中toString()和String()区别详解

    下面是详细的攻略: 标题 1. JS中toString()方法 在JS中,每个基本数据类型都内置了一个toString()方法。这个方法可以把当前对象转换为一个字符串形式,然后返回结果。toString()方法通常不需要传入参数,但是可以接受一个表示基数的参数,用于指定输出数字的基数。 2. String()函数 String()函数是JS中的一个函数,在没…

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