【笔记】JS严格模式

前言

JS严格模式学习笔记

严格模式的作用

  • 消除了JS愈发的一些不合理、不严谨之处,减少了一些怪异行为
  • 消除代码运行的一些不安全之处,保证代码运行的安全
  • 提高编译器效率,增加运行速度
  • 禁用了在ECMAScript的未来版本中可能会定义的一些语法,为未来新版本JS做好铺垫,例如增添部分保留字

开启严格模式

为当前脚本中的所有代码开启严格模式

1
2
3
<script>
"use strict";
</script>

为当前函数中的所有代码开启严格模式

1
2
3
4
5
<script>
(function() {
"use strict";
})();
</script>

严格模式下的规定

对于变量的规定

必须先声明才能使用

1
// 变量名 = 变量值;

严禁删除已经声明的变量

1
// delete 变量名;

对于this指向的规定

构造函数必须使用new才能使用

  • 在全局模式下this不再指向window对象,而是指向undefined
    • 定时器中的this还是指向window对象
  • 因为this不再指向window对象,所以构造函数在不用new时不能使用
1
2
3
4
function 构造函数名() {
this.属性名 = 属性值;
}
// 构造函数名();

对于函数的规定

函数的形参不允许重名

1
// function 函数名(同名形参, 同名形参) {}

不允许在非函数区域和非全局区域定义函数

1
2
3
4
5
6
7
8
9
10
11
if () {
// function 函数名() {}
}

for () {
// function 函数名() {}
}

while () {
// function 函数名() {}
}

完成

参考文献

哔哩哔哩——黑马前端