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常用字符串与数组扩展函数小结

    JavaScript是一门强大的语言,它提供了大量的内置函数,其中包括对字符串和数组的操作。除此之外,还有很多扩展函数可以用于处理字符串和数组。 本文将对常用的JavaScript字符串和数组扩展函数做一个小结。 JavaScript字符串扩展函数 1. startsWith() startsWith()方法用于判断一个字符串是否以指定的字符串开头。如果是,…

    JavaScript 2023年5月27日
    00
  • File, FileReader 和 Ajax 文件上传实例分析(php)

    首先我们来介绍一下File、FileReader和Ajax文件上传,然后详细讲解与PHP语言相关的开发实例。 什么是File、FileReader和Ajax文件上传 File File是HTML5中的一个API,用于提供用户选择的文件。我们可以通过input标签中的type=”file”来实现文件选择,然后可以通过JavaScript代码获取到选择的文件的相…

    JavaScript 2023年6月10日
    00
  • Javascript级联下拉菜单以及AJAX数据验证核心代码

    Javascript级联下拉菜单以及AJAX数据验证都是在网页开发中会用到的技术,其作用分别是实现前端的交互体验和安全性验证。下面,我将为您提供完整的攻略。 Javascript级联下拉菜单 1. HTML结构 下拉菜单通常是由HTML的标签实现的,因此我们先来构建HTML的结构。 <label for="province">…

    JavaScript 2023年6月10日
    00
  • JavaScript字符串包含问题

    JavaScript字符串包含问题是指在一个字符串中,查找是否包含另一个字符串的问题。通常使用indexOf()或includes()方法来解决该问题。 使用indexOf()方法 indexOf()方法返回字符串中指定字符或字符串第一次出现的位置。返回值为-1表示未找到。可以通过以下方式使用它来判断一个字符串是否包含另一个字符串: let str = ‘h…

    JavaScript 2023年5月28日
    00
  • Ajax基础详解教程(一)

    关于《Ajax基础详解教程(一)》的完整攻略,下面就给大家讲解一下。 1. 简介 该篇教程主要介绍了 Ajax 的基础原理和用法。Ajax 的全称是 Asynchronous JavaScript and XML,即异步 JavaScript 和 XML,它可以随时向服务器请求数据而不用刷新整个页面,从而提高用户的交互体验。相信大家都知道Ajax往往用于实时…

    JavaScript 2023年6月11日
    00
  • AJAX使用get与post模式的区别分析

    AJAX是一种前端技术,可以在不刷新整个页面的情况下向服务器发送和接收数据,从而实现异步交互。而在与服务器通信时,有两种常见的方式:使用GET和POST。 GET和POST的区别 1.数据传递方式 GET是通过URL传递参数,以问号“?”连接URL和参数,多个参数之间使用“&”分隔。 POST是通过http body传递参数,参数不会暴露在URL上。…

    JavaScript 2023年6月11日
    00
  • js实现坦克大战游戏

    一、实现思路1. 创建游戏画布和画笔;2. 定义坦克、子弹和敌人,并设置相应的属性;3. 定义相应的事件监听器,例如键盘事件监听器和计时器事件监听器,实现坦克和子弹的移动以及碰撞检测等功能;4. 实现游戏界面的渲染,例如画出坦克、子弹和敌人的形状,并根据相应的属性进行渲染;5. 实现游戏的控制逻辑,例如坦克与子弹的交互以及敌人与子弹的交互,以此来实现游戏胜利…

    JavaScript 2023年6月11日
    00
  • JavaScript常用事件介绍

    下面我将为您详细介绍“JavaScript常用事件”方面的攻略。在JavaScript中,我们可以使用各种事件来相应网页的状态改变和用户的互动。通过事件,我们可以触发一些特定的JavaScript函数,实现对用户行为的响应。 事件介绍 事件是用户在操作网页时触发的一些动作,包括鼠标点击、键盘输入、页面滚动、窗口大小调整等。常见的事件类型包括: 鼠标事件:cl…

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