为什么使用 use strict
进入标志:
"use script";
使用方式:
可以在 js 代码的第一行,也可以使用在函数中。但是写在 js 代码第一行不利于文件合并,因此可以写在一个自调用函数的第一行
使用目的:
解决 javascript 的不合理不严谨以及不安全的地方,提高编译效率,增加运行速度。为以后的 javascript 做更好的铺垫。
规定:
1、变量声明后才能使用
2、限制一些动态绑定:禁止使用 width 语句、创设 eval 作用域(创建的变量只能在 eval 语句中使用)
3、增强安全措施:禁止 this 指向全局对象(window->undefined)、禁止在函数内部遍历调用栈(caller/arguments)
4、禁止删除变量(只有 configurable 设置为 true 的对象才能被删除,delete 对象)
5、显示报错:修改对象的只读属性、使用 get 方法读取的属性进行赋值、对禁止扩展的对象添加属性、删除一个不可删除的属性
6、重命名:对象不能有同名属性、函数不能有同名参数
7、禁止八进制表示法,在 ES5 中也修改了 parseInt() 的行为,如果传入八进制数字,会被当作是以0开头的十进制字面量
8、arguments 对象限制:不允许对 arguments 赋值、不再追踪参数的变化、淘汰 arguments.callee 和 arguments.aller
9、不允许在非函数的代码块内声明函数
10、增加部分关键字和保留字
11、语句:语句末尾建议使用分号,防止压缩代码导致出错、条件控制语句始终使用代码块,即使代码块中只有一条语句
好处:
1、帮助检查对象的重复键
2、未声明变量,导致变量暴露在全局,导致重写覆盖等
3、提示函数重复参数
4、限制函数的arguments,修改 eval 函数,增加 eavl 作用域,修改 this 指向;防止因不合适的书写导致的错误
5、增加了部分保留字,便于以后 javascript 代码过度
6、语句末尾建议使用分号,防止压缩代码导致出错