JavaScript 严格模式

ECMAScript 5 中引入了“严格模式”的概念,支持严格模式的浏览器包括 IE 10+、Firefox 4+、Safari 5.1+ 和 Chrome。严格模式执行更为严格的语法,代码的行为更加可靠,并且可以优化执行速度。对于之前一些静默失败的行为,在严格模式下会抛出明显的错误。

使用

要进入严格模式,需要在代码顶部添加一个字符串:

"use strict";

可以放在整个脚本的顶部,或是某个函数体的第一行。

function doSomething() {
  "use strict";
  // 整个函数以严格模式运行
}

变量

在严格模式下,不允许省略 var 关键字来创建全局变量。

message = "Hello World! ";
// 非严格模式:创建全局变量
// 严格模式:抛出 ReferenceError

其次,不能对变量调用 delete 操作符。非严格模式下允许这样操作,但会静默失败(返回 false)。而在严格模式下会抛出错误。

严格模式还增加了一些保留字:implementsinterfaceletpackageprivateprotectedpublicstaticyield,不能用其作为变量名,会抛出 SyntaxError。

对象

通过对象字面量创建对象时,不允许重名属性存在:

var person = {
                name: "Nicholas",
                name: "Greg"
             };
//非严格模式:以第二个属性为准
//严格模式:抛出 SyntaxError

在非严格模式下,后面的属性值会覆盖前面的同名属性。

函数

严格模式下,也不允许重名的参数:

function sum (num, num) {
  //do something
}

在非严格模式下,通过 num 只能访问第二个参数,要访问第一个需要通过 arguments 对象,而在严格模式下会抛出错误。
阅读全文 »

flight