当前位置:Gxlcms > JavaScript > Javascript的严格模式strictmode详细介绍_javascript技巧

Javascript的严格模式strictmode详细介绍_javascript技巧

时间:2021-07-01 10:21:17 帮助过:30人阅读

“严格模式”(strict mode)是ECMA-262 Edition 5定义的新语法,表示要用严格的Javascript语法来执行,有一些过去惯用的写法就会抛出SyntaxError异常,例如:
1.变量前没有用var宣告
2.使用八进制语法:var n = 023和var s = "\047"
3.使用with语句
4.使用delete删除一个变量名(而不是属性名):delete myVariable
5.使用eval或arguments作为变量名或函数名
6.使用未来保留字(也许会在ECMAScript 6中使用):implements, interface, let, package, private, protected, public, static,和yield作为变量名或函数名
7.在语句块中使用函数声明:if(a8.其他错误
8.1.对象子面量中使用两个相同的属性名:{a: 1, b: 3, a: 7}
8.2.函数形参中使用两个相同的参数名:function f(a, b, b){}

这些下面具体说明。

一、为什么使用”严格模式”(strict mode)

设立”严格模式”的目的,主要有以下几个:

1.消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
2.消除代码运行的一些不安全之处,保证代码运行的安全;
3.提高编译器效率,增加运行速度;
4.为未来新版本的Javascript做好铺垫。

“严格模式”体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。

另一方面,同样的代码,在”严格模式”中,可能会有不一样的运行结果;一些在”正常模式”下可以运行的语句,在”严格模式”下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。

本文将对”严格模式”做详细介绍。

二、宣告”严格模式”(strict mode)

宣告”严格模式”(strict mode)很简单只有一条语句:

代码如下:
"use strict";

注:老版本的浏览器会把它当作一行普通字符串,加以忽略。

三、宣告”严格模式”(strict mode)的位置及上下文关系

“严格模式”(strict mode)主要是影响他所在的scope,如果在函数中使用,并不会让global scope以及其他未使用的函数变成”严格模式”(strict mode)。也就是说 严格模式声明的范围取决于其上下文。 如果在全局上下文(函数的范围之外)中声明严格模式,则程序中的所有代码都处于严格模式。 如果在函数中声明严格模式,则函数中的所有代码都处于严格模式。 例如,在下面的示例中,所有代码都处于严格模式,并且函数外部的变量声明会导致出现语法错误:“严格模式下未定义变量”。”严格模式”有两种调用方法,适用于不同的场合。

1.针对整个脚本文件

将”use strict”放在脚本文件的第一行,则整个脚本都将以”严格模式”运行。如果这行语句不在第一行,则无效,整个脚本以”正常模式”运行。如果不同模式的代码文件合并成一个文件,这一点需要特别注意。
(严格地说,只要前面不是产生实际运行结果的语句,”use strict”可以不在第一行,比如直接跟在一个空的分号后面。)

代码如下: