【笔记】JS的严格模式
前言
JS的严格模式学习笔记
严格模式的作用
- 消除了JS愈发的一些不合理、不严谨之处,减少了一些怪异行为
- 消除代码运行的一些不安全之处,保证代码运行的安全
- 提高编译器效率,增加运行速度
- 禁用了在ECMAScript的未来版本中可能会定义的一些语法,为未来新版本JS做好铺垫,例如增添部分保留字
开启严格模式
为当前脚本中的所有代码启用严格模式
1 | <script> |
为当前函数中的所有代码启用严格模式
1 | <script> |
在当前类中的所有代码启用严格模式
- 缺省值,无需配置,强制严格模式
1 | class 类名 { |
严格模式下的规定
- 以下代码示例均为错误示例,可能会报错或运行结果超出预期
不会意外创建全局变量
1 | function fn() { |
静默错误强制报错
1 | var obj = { |
不能删除已经声明的变量
1 | var key = "value"; |
形参名不能相同
1 | function fn(key, key) {} |
八进制数必须用0o定义而不能用0定义
1 | var key = 010; |
eval中执行的函数不能为上层作用域定义变量
1 | eval("var key = 'value'"); |
this绑定不会自动转换成对象
1 | function fn() {} |
- 构造函数必须使用new才能使用
- 因为在全局直接调用函数,this指向undefined,所以构造函数在不用new时不能使用
1 | function fn() {} |
不允许在非函数区域和非全局区域定义函数
1 | if (true) { |