es6自带严格模式,也就是说在es5升入es6的时候,第一个要做的就是将一些非严格模式的代码修改。
严格模式的优点:
- 处理一些不合理,不严谨,未声明的代码问题
- 规范化代码,提高编译器的速度,保证代码运行的安全
- 消除代码中一些不安全之处,保证代码运行安全
- 为未来的新版本js做好铺垫
注意:
1、 在es5中,赋值给未声明的变量,会默认为全局变量,并且会挂钩在顶层对象中,这是前端js设计最大的败笔
2、全局的this,不是指向顶层对象了,而是undefined,慢慢将全局对象与顶层对象分开
3、访问arguments是成本高,尽量的少访问这个对象,而且arguments非数组,有length等,禁止使用argument.callee (指向当前执行的函数)
4、 es5中存在全局作用域,函数作用域,es6中增加了块级作用域,严格模式下增加新的eval作用域
5、增加了保留关键字:protect、yield、static
6、不能使用前缀0来表示八进制数
7、arguments不能赋值