将过失错误转成异常
第一,严格模式下无法再意外创建全局变量。
第二, 严格模式会使引起静默失败(silently fail,注:不报错也没有任何效果)的赋值操作抛出异常.
第三, 在严格模式下, 试图删除不可删除的属性时会抛出异常(之前这种操作不会产生任何效果)
第四,在Gecko版本34之前,严格模式要求一个对象内的所有属性名在对象内必须唯一。
第五, 严格模式要求函数的参数名唯一.
第六, 严格模式禁止八进制数字语法.
第七,ECMAScript 6中的严格模式禁止设置primitive值的属性.不采用严格模式,设置属性将会简单忽略(no-op),采用严格模式,将抛出TypeError错误
简化变量的使用
第一, 严格模式禁用 with.
第二, 严格模式下的 eval 不再为上层范围(surrounding scope,注:包围eval代码块的范围)引入新变量. 在正常模式下, 代码 eval(“var x;”) 会给上层函数(surrounding function)或者全局引入一个新的变量 x
第三, 严格模式禁止删除声明变量。delete name 在严格模式下会引起语法错误
简单了解,详细查看https://developer.mozilla.org/zh-CN/docs/orphaned/Web/JavaScript/Reference/Strict_mode