JavaScript 严格模式(strict mode)即在严格的条件下运行。

使用 “use strict” 指令

“use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。

它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。

支持严格模式的浏览器:
Internet Explorer 10 +、 Firefox 4+ 、 Chrome 13+、 Safari 5.1+、 Opera 12+

“use strict” 的目的是指定代码在严格条件下执行。


严格模式的限制

  • 不允许使用未声明的变量
  • 不允许删除变量或对象
  • 不允许变量重名
  • 不允许使用八进制
  • 不允许使用转义字符
  • 变量名不能使用 “eval”,“arguments” 字符串
  • 禁止this关键字指向全局对象
function f(){
    return !this;
} 
// 返回false,因为"this"指向全局对象,"!this"就是false

function f(){ 
    "use strict";
    return !this;
} 
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错

function f(){
    "use strict";
    this.a = 1;
};
f();// 报错,this未定义