(Ryan的Koa系列博客)2.严谨模式(未全部完成)
2017-02-16 11:48
295 查看
前言
'use strict';
ES5的严谨模式,是选择使用受限制的JS编写程序的一种方式。严谨模式不仅仅是一个语法子集,它有意的为普通代码设置了不同的语义。因此,浏览器不能运行没有通过严谨模式特性测试的严谨模式代码。严谨模式代码和非严谨模式代码可以共存,因此,脚本可以在执行基础代码(正常模式)的基础上,增量的执行严谨模式代码。
严谨模式与普通JS语义不同的地方有:
1.严谨模式取消了一些js脚本不报错的地方,让这样的脚本开始抛出错误(提高严谨性,降低容错性,避免一些奇怪的错误发生)
2.严谨模式通过修改一些语言实现方面的错误,解决了js引擎很难优化的代码问题,换句话说,严谨模式的代码会比同样的非严谨模式的代码执行的更加高效。
3.严谨模式禁止了部分会出现在未来ES版本中的语法。此处,还可以这样理解,虽然禁止了部分会出现在未来版本中的语法,但是,严肃模式还是提倡了一些写法是与未来版本相兼容的。
严谨模式的使用
针对文件
在文件头部增加严谨模式的标签"use strict"; console.log("这是严谨模式。");
针对函数
在函数头部增加严谨模式的标签function strict(){
"use strict"; console.log("这是严谨模式。");
}
严谨模式的代码行为
(此处暂时来源于阮一峰的网络日志,阮大大要求“自由转载-非商用-非衍生-保持署名”,之后会结合官网,进行翻译和扩展,替换掉阮大大的这部分)全局变量显式声明
静态绑定
禁止使用with语句
创设eval作用域
增强的安全措施
禁止this关键字指向全局对象
禁止在函数内部遍历调用栈
禁止删除变量
显式报错
重名错误
对象不能有重名的属性
函数不能有重名的参数
禁止八进制表示法
arguments对象的限制
不允许对arguments赋值
arguments不再追踪参数的变化
禁止使用arguments.callee
函数必须声明在顶层
将来Javascript的新版本会引入”块级作用域”。为了与新版本接轨,严格模式只允许在全局作用域或函数作用域的顶层声明函数。也就是说,不允许在非函数的代码块内声明函数。"use strict"; if (true) { function f() { } // 语法错误 } for (var i = 0; i < 5; i++) { function f2() { } // 语法错误 }
保留字
来源 | 保留字 | 说明 |
---|---|---|
严谨模式 | implements | |
严谨模式 | interface | |
严谨模式 | let | |
严谨模式 | package | |
严谨模式 | private | |
严谨模式 | protected | |
严谨模式 | public | |
严谨模式 | static | |
严谨模式 | yield | |
ES5 | class | |
ES5 | enum | |
ES5 | export | |
ES5 | extends | |
ES5 | import | |
ES5 | super | |
浏览器 | const | . |
相关文章推荐
- (Ryan的Koa系列博客)7.依赖库:koa-compose(本文尚未完成)
- (Ryan的Koa系列博客)3.依赖库:debug(本文尚未完成)
- (Ryan的Koa系列博客)9.依赖库:statuses(本文尚未完成)
- (Ryan的Koa系列博客)5.依赖库:composition(代码本机未能执行)
- (Ryan的Koa系列博客)1.说说Koa用到的JS基础知识
- 企业域名更换操作系列6:校验DC是否全部准备完成
- (Ryan的Redis系列博客)7.Redis键的生命周期
- Microsoft AJAX Library Cheat Sheet——ASP.NET AJAX客户端框架的快速参考系列(翻译全部完成)
- (Ryan的Redis系列博客)1.开源协议
- 【出版直播】博客园征途系列,《设计模式——基于C#的工程化实现及扩展》书签制作完成
- 从零开始学_JavaScript_系列(50)——Promise(3)全部完成all和看谁最快race
- (Ryan的Redis系列博客)3.Redis数据类型和抽象
- (Ryan的Redis系列博客)0.Redis系列文章的博客写作计划
- Provisioning Services 7.8 入门系列教程14篇全部完成了.....
- (Ryan的Redis系列博客)4.Redis的键
- (Ryan的Redis系列博客)5.Redis的键字符串类型
- (Ryan的Redis系列博客)9.Redis的列表
- (Ryan的Redis系列博客)6.更改和查询键空间
- (Ryan的Redis系列博客)2.Redis简介
- (Ryan的Redis系列博客)8.Redis的散列