严格模式是ES5中的概念,但在ES6中默认开启
在ES5中定义严格模式,就是为了ES6更好的过渡。严格模式使js语法更加严格,同时也摒弃了一些不好的设计(如with语句)
严格模式和非严格模式的区别:
- 变量必须先声明后再使用。x=1在非严格模式下会创建一个全局变量,严格模式下会报错
- 八进制数使用0o为前缀,否则报错
- 不能对只读属性赋值,否则报错
- 不能删除不可删除的属性,否则报错
- 不能使用with语句
- eval不会在它的外层作用域引入变量
- 函数参数不能重名,否则报错
- arguments不会自动反映函数参数的变化
- 不能使用arguments.callee和arguments.caller
- this不会默认指向window
- …