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发展的潮流。