Javascrip{filter}t has a very strange naming history.
It was first released in 1995 as part of the Netscape Navigator, which gave the new language the name Livescrip{filtering}t. A year later, in order to catch the ride of the media hype about Java at the time, the name was temporarily changed to Javascrip{filtering}t (of course, the relationship between Java and Javascrip{filtering}t is the same as that of Lei Feng and Lei Feng Tower - it has nothing to do with it)
The crooked nut joke is not funny at all
Translator's note: Wikipedia's Javascrip{filter}t entry describes this history in more detail
In 1996, Netscape submitted Javascrip{filtering}t to ECMA International (European Computer Manufacturers Association) for standardization, and finally finalized a new language standard, which was ECMAscrip{filtering}t. Since then, ECMAscrip{filtering}t has been the basis for all Javascrip{filtering}t implementations, although for historical and market reasons (apparently ECMAscrip{filtering}t is not a liking name...... In reality, we only use ECMAscrip{filter}t to call the standard, and we usually use Javascrip{filter}t to call this language.
Terminology:
- Standard: A set of rules that define what distinguishes it from other things
- Implementation: The specific implementation/real-world practice of a standard
However, Javascrip{filtering}t developers don't care much about this, because ECMAscrip{filtering}t hasn't changed much in the 15 years since its inception, and many real-world implementations are already very different from the standard. In fact, after the release of the first version of ECMAscrip{filtering}t, two more versions were released shortly after, but since the release of ECMAscrip{filter}t 3 in 1999, no changes have been successfully added to the official specification for ten years. Instead, browser vendors are scrambling to expand their own languages, leaving web developers with no choice but to experiment with and support these APIs. Even after the release of ECMAscrip{filter}t 5 in 2009, it took several years for these new specifications to gain widespread support from browsers, but most developers still wrote ECMAscrip{filtering}t 3-style code and did not feel the need to learn about them.
Translator's note: The draft of ECMAscrip{filter}t version 4 was abandoned because it was too aggressive, and Adobe's Actionscrip{filtering}t 3.0 is the only implementation of ECMAscrip{filtering}t edition 4 (Flash almost unified the web)
By 2012, things suddenly began to change. There is a push to end support for older versions of IE, and it is more feasible to write code in the style of ECMAscrip{filter}t 5 (ES5). At the same time, a new ECMAscrip{filtering}t specification is launched. At this point, people began to get used to describing various Javascrip{filtering}t implementations in terms of version support for the ECMAscrip{filter}t specification. This new standard was originally called ES. Harmony. In 2015, TC39, the committee responsible for developing the draft ECMAscrip{filter}t specification, decided to change the system for defining new standards to once a year, meaning that each new feature can be added once it is approved, as opposed to the previous specification being finalized only after the entire draft is completed and all features are fine. As a result, ECMAscrip{filtering}t version 6 was renamed ECMAscrip{filtering}t 2015 (ES2015) before it was published in June.
There are still a lot of new Javascrip{filter}t features or syntax being proposed, including decorators, async-await, and static class properties. They are often referred to as ES7, ES2016 or ES. Next, but in fact they can only be called proposals or possibilities, after all, the ES2016 specification is not yet complete, and it is possible that all of them will be introduced, or none of them will be introduced. TC39 divides a proposal into 4 phases, and you can check which stage each proposal is currently in on Babel's website.
So, how do we use this bunch of terminology? The following list may help you:
- ECMAscrip{filter}t: A language standardized by ECMA International and supervised by the TC39 committee. Often used to refer to the standard itself.
- Javascrip{filtering}t: The most common name for various implementations of the ECMAscrip{filtering}t standard. This term is not limited to a specific version of the ECMAscrip{filtering}t specification, and may be used for any varying degree of implementation of any version of ECMAscrip{filtering}t.
- ECMAscrip{filtering}t 5 (ES5): The fifth edition of ECMAscrip{filtering}t, standardized in 2009. This specification is fairly fully implemented in all modern browsers.
- ECMAscrip{filter}t 6 (ES6) / ECMAscrip{filter}t 2015 (ES2015): The sixth edition of ECMAscrip{filtering}t was revised and standardized in 2015. This standard is partially implemented in most modern browsers. You can consult this compatibility table to see how different browsers and tools are implemented.
- ECMAscrip{filter}t 2016: The expected seventh edition of the ECMAscrip{filter}t revision, scheduled for release next summer. The specific features that will be included in this specification have not yet been finalized
- ECMAscrip{filter}t Proposals: Feature and syntax proposals that are considered for inclusion in future versions of the ECMAscrip{filter}t standard will go through five stages: Strawman, Proposal, Draft, Candidate, and Finished.
Throughout this blog, I'll refer to the current version of ECMAscrip{filtering}t as ES6 (because that's what most developers are most accustomed to), next year's specification as ES2016 (because, unlike ES6/ES2015, this name will be used throughout the standardization process), and future language concepts that haven't yet become finalized or drafted ECMAscrip{filtering}t proposals or Javascrip{filter}t proposal. I will do my best to follow this article on any occasion that may cause confusion.