After JavaScript came out, Microsoft implemented the same language, under the different name JScript, in Internet Explorer 3.0 (August 1996). Partially to keep Microsoft in check, Netscape decided to standardize JavaScript and asked the standards organization to host the standard. Work on a specification called ECMA-262 started in November 1996. Because Sun (now Oracle) had a trademark on the term JavaScript, it couldn’t be the official name of the language to be standardized. Hence, ECMAScript was chosen, derived from JavaScript and Ecma. However, that name is used only to refer to versions of the language (where one refers to the specification). Everyone still calls the language JavaScript.

    The following is a list of ECMAScript versions (or editions of ECMA-262) and their key features:

    • ECMAScript 1 (June 1997)
    • First edition
    • ECMAScript 2 (August 1998)
    • Editorial changes to align ECMA-262 with the standard ISO/IEC 16262
    • ECMAScript 3 (December 1999)
    • ECMAScript 4 (abandoned July 2008)
    • ECMAScript 4 was developed as the next version of JavaScript, with a prototype written in ML. However, TC39 could not agree on its feature set. To prevent an impasse, the committee met at the end of July 2008 and came to an accord, summarized in :
    • Develop an incremental update of ECMAScript 3 (which became ECMAScript 5).
    • Develop a major new version that does less than ECMAScript 4, but much more than the incremental update of ECMAScript 3. The code name for the new version is Harmony, due to the nature of the meeting in which it was conceived. Harmony will be split into ECMAScript 6 and ECMAScript 7.
    • Features from ECMAScript 4 that would be dropped included packages, namespaces, and early binding.
    • ECMAScript 5 (December 2009)
    • Adds a strict mode, getters and setters, new array methods, support for JSON, and more (see Chapter 25)
    • ECMAScript 5.1 (June 2011)
    • Editorial changes to align ECMA-262 with the third edition of the international standard ISO/IEC 16262:2011
    • ECMAScript 6

    Reaching consensus and creating a standard is not always easy, but thanks to the collaborative efforts of the aforementioned parties, JavaScript is a truly open language, with implementations by multiple vendors that are remarkably compatible. That compatibility is made possible by a very detailed yet concrete specification. For example, the specification often uses pseudocode, and it is complemented by a test suite, , that checks an ECMAScript implementation for compliance. It is interesting to note that ECMAScript is not managed by the World Wide Web Consortium (W3C). TC39 and the W3C collaborate wherever there is overlap between JavaScript and HTML5.