ECMAScript 7th edition S1-S3

Draft ECMA-262 (Ecma/TC39/2016/010)

7th Edition (第七版) / 2016.03.01

ECMAScript® 2016 语言标准

版权声明

版权声明 © 2016 Ecma国际

这份文档和它可能的翻译版可以被复制并配备到别处,且对它的评论或解释或协助它实现的衍生作品也可以被完整或部分且没有任何形式的限制地编著、复制、出版、传播。这么做的前提是将版权声明和本章节包含到所有这样的复制版和衍生作品中。尽管如此,这份文档本身不能被以任何形式修改,包括移除其版权声明或其对Ecma国际的引用部分都是不允许的,除非是Ecma国际以开发任何文档或是可交付内容为目的需要(在这种情况下必须保留版权声明),又或是根据需求将其翻译到除英语之外的其它语言。

本篇翻译内容是 Toxni 在业余时间翻译整理的,很多内容借用了 w3c 中文兴趣小组的 这篇 ES5 中文译版,第 20 章的内容是 众成翻译QAQMiao 同学翻译的。本翻译只做交流学习使用,遵守 自由转载-非商用-非衍生-保持署名 (创意共享3.0许可证)

译者水平欠佳,错误之处必定很多,希望您能 在这里 提出您的宝贵意见和建议,感激不尽。

介绍

本篇 Ecam 标准规定了 ECMAScript 2016 语言特性,它是 ECMAScript 语言的第七版。自 2017 年发布第一版开始,ECMAScript 已经成长为世界最广泛使用的通用编程语言之一。 它作为浏览器内置脚本被大家熟知,现如今也以脚本语言的身份广泛应用于服务端和其它应用。

ECMAScript 标准建立在一些原有的技术上,最为著名的是 JavaScript (网景) 和 JScript (微软)。它最初由网景的 Brendan Eich 发明,第一次出现是在网景的 Navigator 2.0 浏览器上。Netscape 2.0 以及微软 Internet Explorer 3.0 后序的所有浏览器上都有它的身影。

ECMAScript 标准的编写从 1996年11月 开始。ECMAScript 第一版于 1997年6月 被 Ecma委员会 采纳。

上述标准被快速提交至 ISO/IEC 联合技术委员会,并于 1998年4月 以国际标准 ISO/IEC 16262 通过。1998年6月 Ecma委员会 通过了 ECMA-262 第二版并且保持它与 ISO/IEC 16262 完全一致。第二版的变更仅仅是编辑性质的。

ECMAScript 第三版标准引入了强大的正则表达式,优化了字符串处理方法,加入了 try/catch 异常处理,定义了更严密的错误类型,格式化了数字输出,并且还做了其它一些为了国际化和语言成长的小变更。ECMAScript 标准第三版于 1999年12月 被 Ecma委员会 采纳并于 2002年6月 作为国际标准 ISO/IEC 16262:2002 发布。

自第三版标准发布以来,ECMAScript 已经与万维网的紧密关联,它也已经成为所有浏览器都支持的语言。ECMAScript第四版制定了很多有重要意义的内容,然而它却半路夭折了。尽管如此,它的一部分内容还是被继承在了第六版中。

ECMAScript 第五版标准(发布为ECMA-262 5th edition)规范化了很多已经在浏览器形成共识的语言规范,并且增加了自第三版后的一些新功能。包括存取器属性、反射创建以及对象检测、属性特性的程序控制、数组操作完善、JSON格式支持、并且新增了 严格模式 以检查语法以及程序安全性。第五版于 2009年12月 被 Ecma委员会 采纳。

第五版标准被快速提交至 ISO/IEC 联合技术委员会,并以国际标准 ISO/IEC 16262:2011 通过。5.1 版本对其做了微小改动,并继续以国际标准 ISO/IEC 16262:2011 命名。2011年6月 Ecma委员会 通过了 5.1 版本。

ECMAScript 第六版标准于 2009 年开始制定,此时也正是第五版标准准备提交的时候。其实第六版标准的不少特性都是从第三版发布后,也就是 1999 年后就开始了实验 (大部分在夭折了的第四版中)。所以某种意义上来说,第六版标准已经积累了十五年。本次更新的目标是增加对大型项目和库文件的支持,并且让 ECMAScript 作为其它语言编译的目标。最主要的增强部分有模块化、类 (class) 声明、块级作用域、迭代器 (iterator) 和生成器 (generator)、promise 异步语法、解构模式以及合理的尾调用。除此之外,第六版标准新增了数据结构操作,包括 map、sets、二进制数组等;新增了一些额外补充的 Unicode 字符并允许用在表达式或字符串中;还通过子类化增强其扩展性。第六版标准大大增强类 ECMAScript 语言本身能力以及它对库文件、大工程支持度。该标准于 2015年6月 被 Ecma委员会 通过。

本篇所描述的标准是 Ecma TC39 团队年度更新计划于今年 (2016) 的第一版更新。该纯文本的文档是基于 ECMAScript 2015 标准在 Github 上经过这一年的发展而来。这一年内,ECMAScript 2015 标准收到了数以千计的 issues 和 pull request,包括各类 bug 修复和编辑错误修复。此外,很多软件工具对本文档的编辑提供了便利,譬如 Ecmarkup、Ecmarkdown、Grammarkdown 等。本标准说明还包含了新的幂值运算,以及 Array. prototype 的一个新方法 —— includes

许多个人及团体都对 Ecma TC39 团队年度更新本标准作出了贡献。现在已经形成了一个充满活力的社区,大家一起测试标准、报告 bug、提出可行建议、并向全世界的 ECMAScript 开发者提供教程。但是很可惜我们不可能在这里列出作出贡献的每个团体、每个人的名字。

Allen Wirfs-Brock - ECMA-262 第六版本编辑者

Brian Terlson - ECMA-262 第七版本编辑者

1. 范围

本标准制定目标为 ECMAScript 2016 语言。

2. 一致性

符合标准的 ECMAScript 实现,必须提供并支持本规范描述的所有类型、值、对象、属性、函数、程序语法和语义。

符合标准的 ECMAScript 实现,应当能解释符合 Unicode 8.0。0 或更高版本标准并符合 ISO/IEC 10646 国际标准。

符合标准的 ECMAScript 实现,应当能提供不同国家区域,不同文化,不同语言都适用的用户界面,并且接口定义需符合最新版的 ecma-402 且与本规范兼容。

符合标准的 ECMAScript 实现,允许提供超出本规范描述的额外类型、值、对象、属性、函数。尤其是本规范中描述的对象,允许提供未在本规范中描述的属性和属性值。

符合标准的 ECMAScript 实现,允许支持本规范未描述的程序语法和正则表达式语法。尤其是本规范 11.6.2.2 列出的 “未来保留字”,是允许作为程序语法的。

符合标准的 ECMAScript 实现,严禁包含任何在 16.2 中列出的禁止扩展的程序。

3. 参考文献

为了实现符合本规范的应用程序,下列引用文档是不可或缺的。对于标注了日期的文档,仅适用标注的版本。对于未标注日期的文档,以文档的最新版为准 (包括任何修订版)。

ISO/IEC 10646:2003: Information Technology – Universal Multiple-Octet Coded Character Set (UCS) plus Amendment 1:2005, Amendment 2:2006, Amendment 3:2008, and Amendment 4:2008, plus additional amendments and corrigenda, or successor

ECMA-402, ECMAScript 2015 Internationalization API Specification.

http://www.ecma-international.org/publications/standards/Ecma-402.htm

ECMA-404, The JSON Data Interchange Format.

http://www.ecma-international.org/publications/standards/Ecma-404.htm