• Brief History of JavaScript
  • By Kamran Ahmed
  • The Nuggets translation Project
  • Permanent link to this article: github.com/xitu/gold-m…
  • Translator: Pingren
  • Proofreader: Chorer, PingHGao

JavaScript a brief history of

The origins of JavaScript and how it has evolved over the years

About a decade ago [1], Jeff Atwood (founder of Stackoverflow) asserted that JavaScript was the way of the future and coined “Atwood’s Law” : Any program that can be written in Javascript will eventually be written in Javascript. A decade later, that assertion is more credible than ever. The use of JavaScript continues to expand.

JavaScript to release

JavaScript was originally created by Brendan Eich of NetScape and first published in a NetScape press release in 1995. It has an unusual naming history: it was first named Mocha by its creator, then renamed LiveScript. In 1996, about a year after it was released, NetScape decided to rename it JavaScript again, hoping to ride the Java community’s wave (even though JavaScript had nothing to do with Java). And released a JavaScript enabled Netscape 2.0 browser.

ES1, ES2, and ES3

In 1996, Netscape decided to submit JavaScript to ECMA International in hopes of standardizing it. The first edition of the standard specification was published in 1997, and the language was standardized. After the initial release, standardization of ECMAScript continued, and soon after, two new versions were released: ECMAScript 2 in 1998 and ECMAScript 3 in 1999.

Ten Years of Silence and ES4

After the release of ES3 in 1999, there was a ten-year lull in official standards, during which nothing changed. The fourth version of the standard initially made some progress, with some of the features discussed being classes, modules, static typing, deconstruction, and so on. It was originally scheduled for release in 2008, but was scrapped due to different political opinions about language complexity [2]. However, browser manufacturers continue to introduce language extensions, which can be very frustrating for developers — they have to add Polyfill [3] to resolve compatibility issues between browsers.

From silence to ES5

Google, Microsoft, Yahoo, and the rest of the ES4 debaters finally got together and decided to create a small scale update on top of ES3, tentatively named ES3.1. But the team is still debating what ES4 should include. Finally, in 2009, ES5 was released, mainly with compatibility and security fixes. But it didn’t make much of a splash — it took years for browser manufacturers to fully comply, and many developers continued to use ES3 without knowing what “modern” standards were.

ES6 — ECMASript 2015 release

A few years after the RELEASE of ES5, things are starting to change. TC39 (the committee responsible for ECMAScript standardization under ECMA International) continued standardization work on the next version of ECMAScript (ES6), which was originally named ES Harmony[4] and was named ES2015 when it was finally released. ES2015 adds a number of important features and syntax sugar to make writing complex programs easier. Some of the features provided by ES6 include classes, modules, arrow functions, enhanced object literals, template strings, destructions, default arguments + Rest arguments + Spread operators, Let and Const syntax, asynchronous iterators + for.. Of, generator, set + mapping, Proxy, Symbol, Promise, MATH + Number + String + array + object API, etc. [5].

Browser support for ES6 is still limited, but developers need only write ES6 code and translate it to ES5 to use all of ES6’s features. With the release of version 6 of ECMAScript, TC39 decided to release ECMAScript updates on an annual basis so that new features could be added to the standard as soon as they were adopted. There is no need to wait for the full specification to be drafted and adopted — hence the name ECMAScript 2015 or ES2015, version 6 of ECMAScript, until its release in June 2015. Subsequent ECMAScript releases are scheduled for June each year.

ES7 — ECMASript 2016 released

In June 2016, ECMAScript version 7 was released. There’s relatively little new in ECMAScript 2016, as ECMAScript has moved to annual mode. ES2016 contains only two new features:

  • Exponential operator**
  • Array.prototype.includes

ES8 — ECMAScript 2017 is available

Version 8 of ECMAScript was released in June 2017. The main highlight of ES8 is the addition of asynchronous functions. Here is a list of the new features:

  • Object.values()Object.entries()
  • String padding likeString.prototype.padEnd()String.prototype.padStart()
  • Object.getOwnPropertyDescriptors
  • Use trailing commas in function parameter definitions and function calls
  • An asynchronous function

What is a ESNext

ESNext is a dynamic name that refers to the current version of ECMAScript. For example, at the time of this writing, ES2017 or ES8 is ESNext.

What will happen in the future

TC39 has greatly improved their efficiency since the release of ES6. TC39 is now run as a Github organization with many proposals for new features and syntax for the next release of ECMAScript. Anyone can make a proposal, so the developer community can get more involved. Each proposal goes through four stages of development before being formalized as a specification.

That’s about it, leave your feedback in the comments section. Here are links to the original language specifications: ES6, ES7, and ES8.

  1. Translator’s Note: This article was written in 2017, so ten years ago is 2007. ↩ ︎
  2. Technical differences and commercial politics have been blamed for the failure of ES4, which has been discussed on Zhihu. ↩ ︎
  3. In Web development, a polyfill is code that implements a native API that is not supported by the browser. ↩ ︎
  4. Harmony, Harmony, Harmony, Harmony ↩ ︎
  5. If you are interested, use this Chinese tutorial to learn about these features. ↩ ︎

If you find any mistakes in your translation or other areas that need to be improved, you are welcome to the Nuggets Translation Program to revise and PR your translation, and you can also get the corresponding reward points. The permanent link to this article at the beginning of this article is the MarkDown link to this article on GitHub.


The Nuggets Translation Project is a community that translates quality Internet technical articles from English sharing articles on nuggets. The content covers Android, iOS, front-end, back-end, blockchain, products, design, artificial intelligence and other fields. If you want to see more high-quality translation, please continue to pay attention to the Translation plan of Digging Gold, the official Weibo, Zhihu column.