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未定义