一、严格模式的介绍
“严格模式”的设立是为了消除js语法的一些不合理,不严谨的地方,减少一些怪异行为的出现;不再去兼容es3中的一些不规则的语法,使用全新的es5规范,保护代码运行的安全
一样的代码,“严格模式”中,一些在正常模式下可以运行的语句,在严格模式下将不能运行
二、严格模式的调用
es5严格模式启动:"use strict";
是一行字符串,不会对不兼容es5语法的浏览器产生影响
- 全局严格模式
将"use strict";
放在脚本文件的首行,那么整个脚本都会以严格模式运行
<script type="text/javascript">
"use strict";
console.log("严格模式")
</script>
<script type="text/javascript">
console.log("正常模式")
</script>
这里代码,前一个script标签是严格模式,后一个不是
- 局部函数内的严格模式(推荐)
在一个函数体的第一行加"use strict";
则这个函数体处于严格模式
<script type="text/javascript">
function fn() {
"use strict";
console.log("严格模式')
}
</script>
1.变量在赋值前必须声明
2.局部this不会去指向window,赋值什么就指向什么,无new就报错
3.拒绝重复属性和参数
4.不支持with : 改变当前的ao 代码简化 效率丧失,作用域链被修改
5.严格模式下无法删除变量
6.禁止在函数内部遍历调用栈
7.严格模式新增了一些保留字:implements, interface, let, package, private, protected, public, static, yield。使用这些作为变量名会报错
8.不允许在非函数的代码块内声明函数。
"use strict";
if (true) {
function f() { } // 语法错误
}
for (var i = 0; i < 5; i++) {
function f2() { } // 语法错误
}