JavaScript严格模式到底是何方神圣

严格模式存在的意义?

严格模式相对于不严格模式下增加了许多限制,如不允许使用未声明变量、不允许删除变量或对象和函数、不允许变量重名等,那么,既然有这么多限制,它为何而存在呢?
其实严格模式下的限制是为了消除JavaScript语法不合理、不严谨的地方,减少代码在页面中的怪异行为,它的存在标志着JavaScript向着更安全、合理的方向发展,目前各大主流浏览器已经支持其在自身浏览器运行。
简单的来说,严格模式它可以提高编译器效率,增加运行速度,还可以提到码农们的代码素养,为未来JavaScript谋求一个更好的发展。

严格模式的限制

1、不可以使用未声明的变量:变量都必须使用var关键字声明。

a=10;
console.log(a);
//不适用var关键字声明变量a时会报错。

2、不可以删除变量或对象、函数。

var a=1;
delete a;
//
function fn(){
};
delete fn;
//在严格模式下删除变量、对象和函数时均会报错

3、参数的参数具有唯一性:不可以出现同名参数。

function fn(a,a){
}
console.log(fn);
//此处属于参数重名,会报错

4、不支持八进制。

5、不允许对一个使用getter方法读取的属性进行赋值。

var a = {
	get b(){
	retrun 0;
	}
}
console.log(a);
//在严格模式下不可以使用getter方法来读取属性并赋值

6、不允许删除一个不允许删除的属性。

7、不允许对只读属性赋值。

8、不支持对使用转义字符。

9、不支持使用“arguments”字符串。

10、不能在if语句中声明函数。

11、禁用with语句。

严格模式的使用

“use strict”只能在脚本或函数的开头写下

补充:“use strict”指令上面不可以有可执行代码,否则指令将失效。
“use strict”指令可以放入函数中,用函数包裹,此时,“use strict”指令具有区域性,该函数范围内都将是严格模式。

“use strict”指令是一个字面量表达式。
注意:一旦使用严格模式,一些语法代码将不被支持!

结语

严格模式虽然相对于正常模式增加了许多限制,但其标志着JavaScript在飞速发展中确立了正确的方向,因此,码农们应尽量习惯使用严格模式,以便使自己的代码更加规范,这样才能适应JavaScript发展的潮流。