'use strict';安全
1、严格模式的意义:经过严格模式,会在函数内部进行更严格的错误条件检测函数
2、严格模式的影响this
① 全部的变量必须使用var 关键字声明
② 不能使用delete关键字删除全局变量 ,之前默认删除失败,严格模式下直接报错
③ 在对象中不容许有同名的属性
④ 函数的参数必须惟一(不能出现同名的参数)
⑤ arguments对象的行为不一样,在非严格模式下修改形参的值会反映到arguments中,而严格模式下则相对独立
⑥ 禁用了argument.callee和caller函数,他们一个引用函数自己,一个引用调用函数
⑦ 不能在if语句中声明函数
⑧ 禁止使用eval和argument做为标识符
⑨ 修正this的值,在严格模式下,函数this的值始终是指定的值,不管指定的是什么值。
10 禁用了with语句
11 去掉了JavaScript中的八进制字面量(以0开头的八进制字面量是无效的语法)spa
*严格模式下禁止 this 指向全局变量,会指向undefined对象
设立"严格模式"的目的,主要有如下几个:ip
- 消除Javascript语法的一些不合理、不严谨之处,减小一些怪异行为;字符串
- 消除代码运行的一些不安全之处,保证代码运行的安全;编译器
- 提升编译器效率,增长运行速度;it
-这种语法实现了向后兼容模式,支持严格模式的引擎检测到关键字会启动严格模式,不支持的引擎就当时遇到了一个没有赋值的字符串,作忽略处理。编译
- 为将来新版本的Javascript作好铺垫。