严格模式声明:“use strict”;1、禁止变量未声明就赋值2、限制动态绑定(属性和方法归属哪个对象在编译阶段就要确定)1)禁止使用with2)创建eval作用域,eval内声明的变量外部访问不到3、增强的安全措施1)禁止this关键字指向全局对象2)禁止在函数内部遍历调用栈(函数内访问functionName.caller/functionName.arguments均报错)4、禁止删除变量(只有configurable设置为true的对象属性才能被删除)5、对只读属性赋值将会报错6、重名错误1)函数参数不能重名7、禁止以零(0)开头的8进制表示法,支持数字0加字母o:“0o”为前缀表示八进制数8、arguments的限制1)arguments本身不能被赋值 ,但是arguments[x]仍然可以2)arguments不再追踪参数的变化,在函数内改变参数值,arguments依然指向旧值3)禁止使用arguments.callee,匿名函数无法调用自己了9、函数必须在顶层声明10、不允许使用以下保留字做变量名1)implements2)interface3)let4)package5)private6)protected7)public8)static9)yield