您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery | 小程序 |

JavaScript严格模式use strict的介绍

51自学网 2022-02-21 13:36:21
  javascript

1.概述

1.1严格模式是什么

严格模式是JavaScript中的一种限制性更强的变种方式。严格模式并不是JavaScript中的子集,它在语义上与正常的代码有明显的差异。

虽然说现在大部分浏览器都已经支持严格模式,但是还是有部分老版本的浏览器不支持严格模式,所以不要在未经严格模式特性测试情况下使用严格模式。

JavaScript中的严格模式与非严格模式可以共存,所以在脚本中可以选择性的加入严格模式。

1.2严格模式的目的

使用严格模式的目的如下所示:

首先,严格模式会将JavaScript陷阱直接变成明显的错误。
其次,严格模式修正了一些引擎难以优化的错误:同样的代码有些时候严格模式会比非严格模式下更快。
严格模式禁用了一些可能在未来版本定义的语法。

2.开启严格模式

JavaScript中开启严格模式分为两种,分别是全局开启严格模式和局部开启严格模式。

2.1全局开启严格模式

开启全局严格模式只需要在所有的代码前面输入一段字符串,字符串如下:

"use strict";//或者'use strict';

需要注意的是,如果之前的JavaScript代码是非严格模式的话,建立是不要为这段代码开启严格模式,这样可能会出现问题。建议先从局部开启严格模式,一步一步的调整代码。

2.2局部开启严格模式

局部开启严格模式可以在某个指定的函数中的第一行加入"use strict";这段字符串,这个函数体外还是非严格模式。

开启严格模式的实例代码如下所示:

//全局开启严格模式//"use strict"v = 100console.log(v)function fun() {  //局部开启严格模式  'use strict'  vv = 200  console.log(vv)}// fun() 抛出异常 vv is not defined

3.严格模式中的变量

3.1禁止意外创建变量

所谓的意外创建变量就是指不使用var关键字声明的变量。当在严格模式下,如果意外创建全局变量,将会抛出异常,

示例代码如下所示:

'use strict'//在非严格模式下,这样创建变量将不会报错,但是在严格模式下这样创建变量将会抛出异常v = 100console.log(v)

3.2静默失败转为异常

所谓静默失败就是既不报错也没有任何效果,在严格模式下将会转为异常。

3.3禁用delete关键字

在非严格模式下,对全局变量使用delete关键字将会出现静默失败,而在严格模式下,将会抛出异常,示例代码如下所示

'use strict'var v = 100delete v // SyntaxError:Deleteofanunqualifiedidentifierinstrictmode.console.log(v)

3.4对变量名的限制

在严格模式下,JavaScript对变量名也有限制,特别是不能使用保留字作为变量名,使用保留字作为符作为变量名会导致语法错误。

4.严格模式中的对象

4.1不可删除的属性

在非严格模式下,对不可删除的属性使用delete关键字将会出现静默失败,而在严格模式下,将会抛出异常。

示例代码如下所示:

"use strict"delete Object.prototype;//抛出异常

4.2只读属性的赋值

在非严格模式下,对一个只读的属性进行赋值操将会静默失败,但是在严格模式下将会抛出异常,示例代码如下:

'use strict'var obj = {}Object.defineProperty(obj, 'name', {  value: '一碗粥',})obj.name = '一碗周' //抛出异常

4.3不可扩展的对象

在非严格模式下,为不可扩展的对象添加新的属性将会静默失败,而在严格模式下将会抛出异常。

示例代码如下所示:

//开启全局严格模式'use strict'var obj = {}//将
下载地址:
JS实战面向对象贪吃蛇小游戏示例
JS高级ES6的6种继承方式
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。