Scope

ES6 Language Specification

1. Scope

This Standard defines the ECMAScript 2015 general purpose programming language.

Simple enough. Perhaps the most straightforward part of the spec!

Introduction

ES6 Language Specification

Introduction

This Ecma Standard defines the ECMAScript 2015 Language. It is the sixth edition of the ECMAScript Language Specification. Since publication of the first edition in 1997, ECMAScript has grown to be one of the world’s most widely used general purpose programming languages. It is best known as the language embedded in web browsers but has also been widely adopted for server and embedded applications. The sixth edition is the most extensive update to ECMAScript since the publication of the first edition in 1997.

ECMAScript, widely known by Oracle’s trademarked name Javascript, has been around for over 2 decades. Javascript was initially developed in May 1995 by Brandon Eich. However, the first version of the ECMAScript standard for the language was released in 1997, and the last major update to the standard prior to 2015 was back in 2009. ECMAScript has been painstakingly built by many renowned experts in the programming world, and incorporates an extremely extensive and impressive array of features into the language. ECMAScript 2015 (which we frequently refer to as ES6 for brevity) ushers in a realm of amazing new possibilities and one that is increasingly better positioned as a tool not just for the web, but for applications everywhere.

Goals

Goals for ECMAScript 2015 include providing better support for large applications, library creation, and for use of ECMAScript as a compilation target for other languages. Some of its major enhancements include modules, class declarations, lexical block scoping, iterators and generators, promises for asynchronous programming, destructuring patterns, and proper tail calls. The ECMAScript library of built-ins has been expanded to support additional data abstractions including maps, sets, and arrays of binary numeric values as well as additional support for Unicode supplemental characters in strings and regular expressions. The built-ins are now extensible via subclassing.

The previous paragraph provides a high-level overview of new features added to the language. Each of the items listed are significant additions to the language and often garner a chapter dedicated to each of them in programming books and literature.

The story of ECMAScript

ECMAScript is based on several originating technologies, the most well-known being JavaScript (Netscape) and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in that company’s Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers from Microsoft starting with Internet Explorer 3.0.

Brendan Eich was commissioned by Netscape in 1995 to create a programming language to be used in the pioneering Netscape Navigator web browser. While being developed the name for the language was Mocha, but upon its initial release was renamed LiveScript. In September in 1995, Netscape renamed LiveScript to JavaScript upon the beta release of its Netscape Navigator 2.0 web browser. The name JavaScript is trademarked, so in 1996 Microsoft released a language called JScript, which is a reverse-engineered version of Javascript, for use in Internet Explorer 3. The browser wars that followed, and the difficultly developers were having in making their applications work well cross-platform, prompted Netscape to submit JavaScript to the Ecma International organization for official standardization. The resulting standardization of JavaScript and the nearly identical JScript was released in 1997 under the official name ECMAScript.

ES1

The development of the ECMAScript Language Specification started in November 1996. The first edition of this Ecma Standard was adopted by the Ecma General Assembly of June 1997.

ES2

That Ecma Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved as international standard ISO/IEC 16262, in April 1998. The Ecma General Assembly of June 1998 approved the second edition of ECMA-262 to keep it fully aligned with ISO/IEC 16262. Changes between the first and the second edition are editorial in nature.

In other words, not much changed between the first and second edition other than some editorial changes.

ES3

The third edition adopted in 1999 and published in 2002 introduced important and basic features to the language such as try/catch handling, and regular expressions. ES3 was widely adopted and is fully supported by browsers as far back as Internet Explorer 6.

The third edition of the Standard introduced powerful regular expressions, better string handling, new control statements, try/catch exception handling, tighter definition of errors, formatting for numeric output and minor changes in anticipation future language growth. The third edition of the ECMAScript standard was adopted by the Ecma General Assembly of December 1999 and published as ISO/IEC 16262:2002 in June 2002.

ES4

Unfortunately, disagreements as to the future of the language arose post-release of the third edition.

After publication of the third edition, ECMAScript achieved massive adoption in conjunction with the World Wide Web where it has become the programming language that is supported by essentially all web browsers. Significant work was done to develop a fourth edition of ECMAScript. However, that work was not completed and not published as the fourth edition of ECMAScript but some of it was incorporated into the development of the sixth edition.

The reason for this is that many in the committee believed ES4 was too ambitious, and perhaps it was, as in 2008 the spec was dropped and an agreement called ECMAScript Harmony was formed. The executive summary of the 2008 agreement states:

Subsequently, ES3.1 was released in 2009 as ES5 and slightly revised in 2011 as ES5.1, while much of the original ES4 was incorporated into the sweeping changes of ES6.

ES5

Very important yet modest features made their way into ES5. Important new features include enhanced object creation and control properties/functions, utility array functions, strict mode, and native JSON support. ES5 has full native support in IE9+, Firefox 4+, and Chrome 7+.

The fifth edition of ECMAScript (published as ECMA-262 5th edition) codified de facto interpretations of the language specification that have become common among browser implementations and added support for new features that had emerged since the publication of the third edition. Such features include accessor properties, reflective creation and inspection of objects, program control of property attributes, additional array manipulation functions, support for the JSON object encoding format, and a strict mode that provides enhanced error checking and program security. The Fifth Edition was adopted by the Ecma General Assembly of December 2009.

The fifth Edition was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved as international standard ISO/IEC 16262:2011. Edition 5.1 of the ECMAScript Standard incorporated minor corrections and is the same text as ISO/IEC 16262:2011. The 5.1 Edition was adopted by the Ecma General Assembly of June 2011.

ES6

Focused development of the sixth edition started in 2009, as the fifth edition was being prepared for publication. However, this was preceded by significant experimentation and language enhancement design efforts dating to the publication of the third edition in 1999. In a very real sense, the completion of the sixth edition is the culmination of a fifteen year effort.

Dozens of individuals representing many organizations have made very significant contributions within Ecma TC39 to the development of this edition and to the prior editions. In addition, a vibrant informal community has emerged supporting TC39’s ECMAScript efforts. This community has reviewed numerous drafts, filed thousands of bug reports, performed implementation experiments, contributed test suites, and educated the world-wide developer community about ECMAScript. Unfortunately, it is impossible to identify and acknowledge every person and organization who has contributed to this effort.

Indeed! ES6 is among the most exciting developments in modern programming history. It is a sweeping set of additions to one of the world’s most popular languages. It indeed reflects 15 years of collaboration and effort by many of the brightest minds in our industry.

Future

New uses and requirements for ECMAScript continue to emerge. The sixth edition provides the foundation for regular, incremental language and library enhancements.

Moving forward, the goal is to produce yearly, incremental, updates to the language. ES6 or ECMAScript 2015 is the start of this exciting process!