es6严格模式的限制
函数无调用者,this指向undefined 不再指向window
定义变量前必须声明,不允许隐式声明
对函数中的arguments做了限制:
不允许对arguments赋值(地址不可变),但可以对里面的元素进行修改,是可以追踪的
不再追踪arguments参数的变化,也就是说修改形参,arguments里面的元素不会变化了
禁止使用 arguments.callee, 就是说不能够在函数内部调用自身
4.对象中不允许属性重名,函数中不允许参数重名,变量中不允许变量重名
禁止使用with语句,因为with语句无法在编译时就确定归属于哪个对象,挺消耗性能的
新增eval作用域:eval('js字符串') 能够把该js字符串转换为js代码,作用域就在该字符串内,外部不能够访问该作用域内部的变量
构造函数忘了加new,this不再指向window,而是报错,就是说 一个函数内使用了this,而没使用new关键字
对不合理的操作,不再静默处理,而是报错,如:
使用delete 删除一个全局变量
对一个对象的只读属性赋值
对一个对象中只有getter方法的属性赋值会报错(没有setter方法而赋值)
对一个不可扩展的对象扩展,会报错,设置一个对象不可扩展Object.preventExtensions(obj)
删除一个不可删除的属性,如 delete Object.prototype禁止使用8进制表示法
不允许在非函数的代码块(如:{} 内)中声明函数
新增了些保留字,如public static class