严格模式
严格模式是浏览器根据web标准去解析页面,是一种要求严格的DTD,不允许使用任何表现层的语法。为了消除js语法中一些不严谨,不严格的地方,同时消除代码的安全隐患,浏览器为js提供严格模式的执行。
引入严格模式
ES5中的严格模式,只需要在脚本文件中,添加:1
而ES6则将他坐实,不需要添加开头,默认为严格模式,这也是导致严格模式开始越来越受到重视的原因之一。因此需要或者至少指导严格模式下和非严格模式下的区别,参考大量资源简要介绍如下:
- 取消直接使用变量,必须声明后使用;
- 函数参数不得有重名属性;
- 不能使用with语句;
- 不能对只读属性赋值;
- 八进制数据不得采用0开头;
- 不可删除的属性不能被任何方法删除;
- 同时,变量也变得不可删除;
- eval不会在外层作用域引入变量;
- eval和arguments不能被重新赋值//!这点需要注意
- arguments不会自动反应函数参数的变化,callee和caller方法不可用,也不能用函数.caller和函数.arguments找到函数堆栈;
- 禁止this指向全局;如果没有指定this,则为undefined;
- 增加了些关键词:interface/static/protect,java中有关私有安全的几个关键词。