说一下 JavaScript 严格模式下有哪些不同
1.1 将过失错误转成异常
- 严格模式下无法再意外创建全局变量。
- 严格模式会引起静默失败的赋值操作抛出异常
- 在严格模式下,试图删除不可删除的属性时会抛出异常
- 严格模式要求函数的参数名唯一
- 严格模式禁止八进制数字语法
- ECMAScript 6 中的严格模式禁止设置 primitive 值的属性
1.2 简化变量的使用
- 严格模式禁用 with
- 严格模式下 eval 不再为上层范围引入新变量
- 严格模式禁止删除声明变量
1.3 让 eval 和 arguments 变的简单
- 名称 eval 和 arguments 不能通过程序语法被绑定(be bound)或赋值
- 严格模式下,参数的值不会随 arguments 对象的值的改变而变化。
- 不再支持 arguments.callee。
1.4 安全的 JavaScript
- 在严格模式下通过 this 传递给一个函数的值不会被强制转换为一个对象。
- 在严格模式中再也不能通过广泛实现的 ECMAScript 扩展“游走于”JavaScript 的栈中。
- 严格模式下的 arguments 不会再提供访问与调用这个函数相关的变量的途径。
1.5 为未来的ECMAScript版本铺平道路
