在es5中可以开启一种严格模式的代码形式,开启方式是:将全局或者函数的第一条语句定义为:‘use strict‘;。 如果浏览器不支持,会将其解析为一条普通语句,没有任何的副作用。
开启全局模式后会有一下的一些约束:
1.第一次定义变量的时候必须使用var。如:test = ‘heihei‘;alert(test); 该语句在没有开启严格模式的环境下不会报错,但是开启后会报错必须使用:var test = ‘heihei‘;
2.禁止定义的函数中的this指向window(即全局)。如:
function person(name){
this.name = name;
alert(this.name);
}
person(‘test‘);
该语句在未开启严格模式的环境下不会报错。但是开启严格模式后,函数中的this就指向了window会报错,可以改为下列的方式:
function person(name){
this.name = name;
alert(this.name);
}
var p = new person(‘test‘);
3.eval();函数中的语句有自己的作用域,eval()函数会将里面的字符串当作语句来执行。如:
var test = ‘haha‘;
eval(‘var test = "heihei";alert(test);‘);
alert(test);
该语句在未开启严格模式的环境下会输出:haha,和haha,也就是说在eval()函数中改变了test变量的值。如果加上严格模式则会输出:heihei和 haha
ES5-严格模式
原文:https://www.cnblogs.com/maycpou/p/12240009.html