引言

本内容是 Ecma 标准组织定义的 ECMAScript 2017 语言规范。该规范是 ECMAScript 语言规范的第八版。自 1997 年第一版诞生以来,ECMAScript 已经成为被广泛使用的编程语言了。它被人们所熟知是因为这是一门被嵌入在 Web 浏览器中的语言,但现在也被广泛应用于服务器端和嵌入式应用程序中。

ECMAScript 是基于几种技术而产生的,最出名的当数 JavaScript(Netscape)和 JScript(Microsoft)。该语言的创始人是当时在网景公司任职的布兰登·艾奇(Brendan Eich),这门语言首次出现则是在该公司的 Navigator 2.0 浏览器之中。而后,它就出现在网景公司所有的浏览器之中,微软公司首次使用它是在IE 3.0 中。

ECMAScript 语言规范的开发工作始于 1996 年 11 月。Ecma 标准的第一版于 1997 年 6 月由 Ecma 标准组织通过。

1998 年 4 月,Ecma标准递交给 ISO/IEC JTC 1 后条快速通道程序下通过,并定为了国际标准 ISO/IEC 16262。1998 年 6 月的 Ecma 大会后,ECMA-262 第二版出炉,并保持与 ISO/IEC 16262 一致。而这两版的编辑可谓是十分自然的。

第三版标准引入了强大的正则表达式、更好的字符串处理、新的控制语句、try/catch 异常处理、更加严格的错误定义、数值输出格式化以及对未来该语言的成长所作出的微小改变。ECMAScript 标准第三版于 1999 年 10 月 被 Ecma 大会通过,于 2002 年 6 月写入ISO/IEC 16262:2002 中。

在第三版纳入规范以后,ECMAScript 实现了与万维网的广泛应用,一跃成为了被所有浏览器支持的编程语言。在此之后就开始了着手第四版的开发工作,然而这项工作并没有完成,同时也没有纳入到 ECMAScript 标准中。但其中的一部分标准合并到第六版的开发中去了。

ECMAScript 第五版编撰了该语言规范事实上的解释(这些解释在浏览器中已经被广泛使用了),同时增加了自第三版发布以来出现的新特性的支持。比如包括了存取器属性、反射创建和对象检查,属性特性的程序控制、内置额外的数组操作函数、支持 JSON 对象的编码模板,以及提供了加强检查错误与编程安全考虑的严格模式。第五版标准于 2009 年 12 月在 Ecma 大会上通过。

第五版通过快速通道程序提交给 ISO/IEC JTC 1 通过,并被批准为国际标准 ISO/IEC 16262:2011。ECMAScript 5.1 版本包含了一些小的修正,并与 ISO/IEC 16262:2011 保持一致。5.1 版于 2011 年 6 月在 Ecma 大会上通过。

第六版的开发是从 2009 年开始的,因为那时第五版正在准备出版。然而,在第五版出版以前,进行了大量的实验和语言增加设计工作。在某中意义上来说,第六版的完成是十五年努力的顶点。该标准的目标是为大型应用程序、库创建和将 ECMAScript 用作其他语言的编译目标提供更好的支持。它的主要增强包括了模块、类声明、词法块范围、迭代器和生成器、异步编程、解构模式和正确的尾调用。扩展了内置函数的 ECMAScript 库以支持其他数据抽象,包括二进制的数字值额映射。、集合和数组,以及对字符串和正则表达式中的 Unicode 补充字符的其他支持。内置函数也通过子类化扩展。第六版为定期、增量的语言和库增强提供了基础。第六版于 2015 年 6 月在 Ecma 大会上通过。

ECMAScript 规范是在 Ecma TC39 的新的年度发布节奏和开放开发过程下发布的第一个ECMAScript版本。 一个纯文本源文档是从ECMAScript 2015源文档构建的,作为完全在GitHub上进一步开发的基础。 在本标准开发的一年中,提交了数百个请求和问题,代表了数千个错误修复,编辑修复和其他改进。 此外,开发了许多软件工具来帮助这项工作,包括 Ecmarkup、Ecmarkdown 和Grammarkdown。 该规范还包括对新的乘方运算符的支持,并向名为 include 的 Array.prototype 添加一个新方法。

代表许多组织的几十个人在Ecma TC39中对这个版本的发展和以前的版本做出了非常重要的贡献。 此外,一个充满活力的社区已经出现支持TC39的ECMAScript的努力。 这个社区审查了许多草案,提交了成千上万的错误报告,执行实施实验,贡献测试套件,并教育世界各地的开发人员社区关于ECMAScript。 不幸的是,不可能识别和承认为这一努力做出贡献的每个人和组织。

Allen Wirfs-Brock

ECMA-262, 6th Edition Project Editor

Brian Terlson

ECMA-262, 7th Edition Project Editor

results matching ""

    No results matching ""