ECMAScript 5 的严格模式

JavaScript 的设计有一些糟粕,常常带来问题。ECMAScript 作为 JavaScript 的标准化,在 5.0 版本中增加了严格模式(strict mode),试图解决 JavaScript 存在的一些问题。要使用严格模式,可以在文件开始或者函数开始加上这一句代码:

"use strict";

如果这句代码放在文件的开始,将对后面所有的代码启用严格模式,而放在函数内部将只对该函数启用严格模式。我们来看看严格模式有那些限制。

1. 变量的声明必需使用 var 关键字。例如:

a = 1; // wrong
var a = 1; // right

2. 如果函数调用时没有所属的对象,在函数内部的 this 将不会指向 window 而是 undefined。例如:

function test() {
  alert(this);
}
test(); // undefined

3. 对象的属性名称不可重复。例如:

var obj = {
  foo: true;
  foo: false; // wrong
};

4. 函数的参数不可重复。例如:

function test(a, b, a) {  // wrong
}

5. with 语法不再可以使用。例如:

with (someobj) { // wrong
}

6. eval 成为关键字,不能作为变量名。而且在 eval 中定义的变量只在其中有效。例如:

var a = true;
eval("var a = false;");
alert(a); // true

各个浏览器对 JavaScript 的严格模式的支持可以参考[3],基本上,主流的浏览器的最新版本都支持它。

参考资料:

[1] It’s time to start using JavaScript strict mode
[2] JavaScript 严格模式(Strict Mode)介绍
[3] ECMAScript 5 compatibility table
[4] 淺談 ECMAScript 5 嚴格模式
[5] Strict mode - MDN

原文地址:https://www.cnblogs.com/zoho/p/2518629.html