定义
- 消除了js语法的一些不合理、不严谨之处,减少了一些怪异行为
- 消除代码运行的一些不安全之处,保证代码的安全
- 提高编译器效率,增加运行速度
开启严格模式
严格模式可以应用到整个脚本或个别函数中
1、为脚本开启严格模式
在所有语句之前放一个特定的语句“use strict”;
<script>
'use strict'
//下面的js 代码就会按照严格模式执行
</script>
2、为函数开启严格模式
function fn() {
'use strict'
//下面的js 代码就会按照严格模式执行
}
3、严格模式的变化
1、变量规定
- 正常模式-->变量未声明赋值-->全局变量 严格模式禁止这种做法,必须var先声明,然后再使用
- 不能随意删除已经声明好的变量 delete num
2、this指向
- 全局作用域下函数中的this指向windows对象
- 严格模式下全局作用域中的函数this是undefined
3、严格模式下,如果构造函数不加new调用,this会报错
<script>
'use strict'
function Star() {
this.sex = '男';
}
Star();
</script>
//Uncaught TypeError: Cannot set properties of undefined (setting 'sex')
at Star
4、严格模式下,定时器this还是指向window
5、函数变化
- 不允许参数同名
- 函数必须声明在顶层,不允许在非函数的代码块内声明函数
<script>
'use strict'
if (true) {
function f() {}//语法错误
f()
}
</script>