一.什么是严格模式
JavaScript 严格模式(strict mode)即在严格的条件下运行。
二.严格模式的优点
1.减少js代码的不规范使用和不合理运行。
2.提高编译器效率,提高运行速度。
3.消除代码运行的一些不安全之处,保证代码运行的安全。
4.为未来新版本的Javascript做好铺垫。
三.严格模式的分类
1.全局严格
2.局部严格 (在方法内部使用严格)
四.严格模式的限制
1.不能使用未定义的变量 (输出:x is not defined)
例如:
b=20;
console.log(b);
2.不允许删除变量或者对象
例如:
function fun(){
}
delete fun;
3.不允许变量重名,函数的形参不能重名
例如:
var a=10;
var a=20;
console.log(a);
4.不允许使用八进制
例如:
var x = 010;
console.log(x);
5.不允许使用转义字符
例如:
var a=\010;
console.log(a);
6.不允许修改只读属性的值
例如:
var obj={}
Object.defineProperty(obj,'x',{
value:10,
writable:false
7.不允许对只有getter方法的属性修改(类似不允许修改只读)
例如:
var obj={
_x:null,
get x(){
return this._x;
},
set x(a)
{
console.log("执行set");
this._x=a;
}
}
obj.x=20;
console.log(obj._x,obj);
8.不允许删除对象的原型对象
例如:
var obj={
name:'zhangsan'
}
delete obj.name;
delete obj.__proto__;
delete Object.prototype;
console.log(obj);
9.不能使用eval 或者arguments 作为变量名
例如:
var eval=10;
console.log(eval);
10.严格模式下this指针this===undefined
例如:
fun();
function fun(){
console.log(!this);
}