严格模式(Strict Mode)是ECMAScript 5中提出的一个新特性,在严格模式中的代码。这种严格的语境会防止某些特定的操作并抛出更多的异常。严格模式向前兼容,所以在不支持ES5的浏览器中是正常运行代码的,而只有支持严格模式的浏览器才会开启严格模式。
严格模式的好处
启用严格模式有以下好处:
- 捕获一些编程错误,并抛出异常。
- 阻止进行一些相对“不安全”的操作(例如访问全局变量),抛出异常。
- 禁用一些让人迷惑的特性。
启用严格模式,需要从下面两个方面来做限制(检查)
- 语法解析阶段:如果在语法检测时发现语法问题,则整个代码块失效,并导致一个语法异常。
- 阻止进行一些相对“不安全”的操作(例如访问全局变量),抛出异常。
- 代码执行阶段:如果在运行期出现了违反严格模式的代码,则抛出执行异常。
使用严格模式
在全局中使用严格模式
如果要在全局范围内使用严格模式,只需要在代码的第一行加上下面的代码:
"use strict";
这样在一个js文件,或者script标签内的所有代码都需要遵循严格模式的代码要求
函数中使用严格模式
如果要在某个函数中使用严格模式需要在函数的第一行加上"use strict";
,如下面的代码
function foo(){
"use strict";
//……
}
使用严格模式注意的情况
需要注意的是,如果"use strict";
不是出现在第一行(全局的、或者函数的),那么严格模式的启用会被忽略,即还是不会使用严格模式来解析执行代码。
另外在函数的严格模式中函数体和函数声明部分就需要遵循严格模式,而不是只有函数体内的代码才遵循严格模式,例如在严格模式中不允许重新定义eval
,说以下面的代码是会抛出异常的
function eval(){
"use strict";
//……
}
今天写到这,下一篇介绍严格模式下面的语法限制。
《ECMAScript 5的严格模式:语法限制》