文章目录
1、严格模式目的
严格模式的目的:
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
2、严格模式使用
进入严格模式 "use strict"
//script标签中使用严格模式。
<script>
"use strict";
console.log(“已经进入了严格模式")
</script>
3、严格模式规范
3.1 全局变量声明时,必须加var
<script>
"use strict";
a = 10; //报错,因为a没有被var声明
</script>
3.2 this无法指向全局对象(在函数中)
<script>
"use strict";
console.log(“已经进入严格模式”);
function a(){
this.b = 10; //报错,因为this是undefined
}
a();
</script>
3.3 函数内重名属性
<script>
"use strict";
function a(b, b, c){ //报错
//语法错误:在此上下文中不允许重复的参数名称
}
</script>
3.4 arguments对象
arguments对象不允许被动态改变:
<script>
function fn1(a){
a = 2;
return [a, arguments[0]];
}
console.log(fn1(1)); //正常模式为[2,2];
function fn2(a){
"use strict";
a = 2;
return [a, arguments[0]];
}
console.log(fn2(1)); //严格模式为[2,1];
</script>
3.5 新增保留字
新增保留字:implements, interface, let, package, private, protected, public, static, yield
<script>
"use strict";
function package(protected){ //语法错误
var implements; //语法错误
}
</script>