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