Original website: http://huangxuan.me/2015/09/22/js-version/
JavaScript has a strange history of naming.
It was first released as part of the Netscape browser (Netscape Navigator) in 1995, and Netscape named the new language LiveScript. A year later, in order to catch the media stir Java, temporarily renamed to JavaScript (of course, the relationship between Java and JavaScript, and Lei Feng and Lei Feng Tower-like-and no relationship)
It's not funny what a crooked nut joke is.
Translator Note: Wikipedia's JavaScript entry describes this history in more detail.
In 1996, Netscape submitted JavaScript to the ECMA International (European Association of Computer manufacturers) to standardize and finalize the new language standard, which is ECMAScript. Since then, ECMAScript has become the basis for all JavaScript implementations, however, because of the historical and market reasons for JavaScript names (it is clear that ECMAScript is not a favorite name ...). In reality, we only use ECMAScript to address the standard, usually still use JavaScript to address the language.
Terminology (Translator's note):
- Standard: A set of rules used to define differences from other things
- Implementation (Implementation): Specific implementation/real practice of a standard
However, JavaScript developers do not care much about this, because in the 15 years since the birth of ECMAScript, there has been little change, and many implementations of reality have been quite different from the standard. In fact, after the release of the first version of ECMAScript, soon followed by the release of two versions, but since 1999 ECMAScript 3 released, no changes have been successfully added to the official code in ten years. Instead, the big browser makers are scrambling to develop their own language, and web developers have no choice but to try and support these APIs. Even after the release of ECMAScript 5 in 2009, it took years for these new specifications to be widely supported by browsers, but most developers wrote ECMAScript 3-style code and did not feel the need to understand the specifications.
Note: ECMAScript Fourth edition was abandoned because it was too aggressive, Adobe's ActionScript 3.0 was the only implementation of ECMAScript Edition 4 (Flash almost unified the Web)
By the year 2012, things have suddenly started to change. Everyone started pushing to stop support for older versions of Internet Explorer, and writing code in ECMAScript 5 (ES5) style became more feasible. At the same time, a new ECMAScript specification is starting to start. By this time, people began to become accustomed to the version of the ECMAScript specification to support the extent to describe the various JavaScript implementations. Before formally being named ECMAScript 6th Edition (ES6), this new standard was originally called ES. Harmony (Harmony). In 2015, the Commission responsible for formulating the draft ECMAScript norms TC39 decided to change the system for defining the new standards once a year, which meant that each new feature could be added once it was approved, and not, as in the past, the specification would be finalized only if the entire draft had been completed and all the features were not in question. As a result, the 6th edition of ECMAScript was renamed to ECMAScript (ES2015) before it was released in June
Currently, there are still a lot of new JavaScript features or syntax being proposed, including decorators (decorator), Async-await (async-await Asynchronous programming model), and static class properties. They are often referred to as es7,es2016 or ES. Next features, but in fact they can only be referred to as proposals or possibilities, after all, the ES2016 specification has not been completed, it is possible that all will be introduced, there may be none. TC39 has divided a proposal into 4 stages, and you can check the Babel's website to see where the proposals are now.
So how do we use this whole bunch of terminology? The following list may be helpful to you:
- ECMAScript: A language that is standardized by the ECMA international and supervised by the TC39 Committee. Usually used to refer to the standard itself.
- The most commonly used salutation to the various implementations of the JAVASCRIPT:ECMASCRIPT standard. This term is not limited to a specific version of the ECMAScript specification, and may be used for any different degree of implementation of any version of ECMAScript.
- ECMAScript 5 (ES5): ECMAScript revision of the fifth edition, standardized in 2009. This specification is quite fully implemented in all modern browsers.
- ECMAScript 6 (ES6)/ECMAScript (ES2015): ECMAScript's sixth revision, standardized in 2015. This standard is partially implemented in most modern browsers. This compatibility table can be consulted to see how different browsers and tools are implemented.
- ECMAScript 2016: The expected seventh edition of the ECMAScript Revision is scheduled to be released next summer. The specifics of this specification will contain what features have not yet been finalized
- ECMAScript proposals: The features and grammar proposals that are considered for inclusion in future versions of the ECMAScript standard, they need to go through five stages: Strawman (Scarecrow), proposal (proposal), Draft (draft), Candidate (candidate) and finished (complete).
In this entire Blog, I will refer to the current ECMAScript version as ES6 (because this is the most popular for most developers), the next year's specification is called ES2016 (because, unlike es6/es2015, This name will be used throughout the standardization process and will be referred to as the ECMASCRIPT proposal or JavaScript proposal for future language concepts that have not yet been finalized or drafted by ECMAScript. I will do my best to use this article in any situation that may cause confusion.
Some resources
- All current public proposals are visible on TC39 's Github warehouse.
- If you're not familiar with Es6,babel there's a nice feature at a glance
- If you want to delve into ES6, here are two great books: Axel Rauschmayer exploring ES6 and Nicholas Zakas 6. Axel Blog 2ality is also a very good ES6 resources
Let's learn JavaScript!
ES5, ES6, ES2016, ES. What's the Next:javascript version?