'use strict'使用严格模式会产生什么问题?
https://wangdoc.com/javascript/oop/strict
在ES6规范出来之前,为了明确禁止一些不合理、不严谨的语法,减少 JavaScript 语言的一些怪异行为,而设计的一种更加严格的JS语法。在阮一峰老师的JS教程里面有很详细的介绍
- 只读属性不可写
- 禁止扩展的对象不可扩展
- eval、arguments 不可用作标识名
- 函数不能有重名的参数
- 禁止八进制的前缀0表示法
- 全局变量显式声明
- 禁止 this 关键字指向全局对象
- 禁止使用 fn.callee、fn.caller
- 禁止使用 arguments.callee、arguments.caller
- 禁止删除变量
- 禁止使用 with 语句
- 创设-eval-作用域
- arguments-不再追踪参数的变化
- 非函数代码块不得声明函数
- 新增了一些保留字(比如implements、interface、let、package、private、protected、public、static、yield等)