JS Evolution
stage-0, stage-1, stage -2 ?
ES6, ES2015, ES2017, ES7, ES8, ESNEXT
What about ES1, ES2, ES3 and ES4 ?
Buzz words:
You’ll never know where you’re going until you know where you’re coming from
- <Insert some cool English writer name >
May 1995 - Mocha was born
to Brendan Eich of Netscape in 10 days
At 4 months of age - they gave it a official name: LiveScript
Still wasn't popular at school so on December 1995 changed the name to sound similar to the coolest kid in town "Java"Script
That worked !
Even though Javascript didn't even have basic stuff like switch statements at that time !
Marketting FTW !!
Others Browsers also wanted it NOW!

August 1996 - Now Microsoft implemented their own version of Javascript - `JScript`
November 1996, Netscape submitted JavaScript to European Computer Manufacturers Association (ECMA) International for Standardization and Technical Committee (TC39) was formed
1997 - ES 1 - First Edition (ECMA-262)
1998 - ES 2 - ISO standardised version
1999 - ES 3 - Major release -
[Got Switch statements, Regex, Nested Functions]
During early 2000s - ES 4 ( JavaScript 2) work began.
Netscape went down .. Microsoft didn't listen anymore and implemented its own features .. There was chaos
...
...
Libraries like JQuery released .. concepts like ajax was introduced for first time
7 - 8 Years
Main Issue with ES4
It was so ambitious that it had backward incompatible changes
So some termed it as "Breaking the Web" version
2009 - But ES4 was abandoned and ES5 was released with minor features.
Google, Opera, Mozilla vs Microsoft, Yahoo
Team ES4
Team ES3.1
ES5 was released - basically ES3.1
1999 - ES3
It was 2009 (nearly 10 years)
and it got a minor upgrade ? Cmon!!!
ES5 contained
- direct support for JSON
- "strict mode" for error checking
- Array prototype methods (like map and forEach)
- Methods for listing properties (like Object.keys).
In early 2000s, ES4 was supposed to have
- classes,
- a module system,
- optional type annotations and static typing, probably using a structural type system,
- generators and iterators,
- destructuring assignment, and
- algebraic data types.
TC39 started work on new major release that would be a scaled back version of the ambitious ES4
This was called Harmony - because of the situation at that time
It was later known as ES6 and was released on late 2014
TC39 decided that they will do yearly release in June from now on and hence they called ES6 → ES2015 ← June 2015
After 2009
5 years
ES2015 - ES6
ES2016 - ES7
ES2017 - ES8
- Promises
- classes
- modules - import, export
- arrow functions
- generators
- Array method includes()
- exponent operator: 2**3 = 8
ESNext - Ongoing next release name
- async/await
- Shared Array Buffers for sharing data with service workers - Basically multithreaded support (service worker)
Took 5 yrs
Stages of proposal
Stage-0 (strawman)
Stage-1 (proposal)
Stage-2 (draft)
Stage-3 (candidate)
Stage-4 (Finished)
Free form ideas, must come from T39 member or T39 contributor
Must come from T39 member, identify potential issues, small implementation via polyfills or demos
Formal proposal, proper implementation required, now this will most likely will be added to JS
Something like beta soft, feedback on implementation required from users
Sign off and inclusion in the next JS version
ES2018 Status ?
https://github.com/tc39/proposals
- Object rest/spread
- Async iteration (for loops for async stuff)
- Promise.finally
- Dynamic import()
- Private methods and properties for classes
- common global for browsers, node, etc
and more ..............
Transpilers - Compile to lower version
Polyfills - Adds feature support by adding some extra JS code to the browser
Google Traceur, Babel
Babel
References
http://www.benmvp.com/learning-es6-history-of-ecmascript/
https://en.wikipedia.org/wiki/ECMAScript
https://medium.com/komenco/what-to-expect-from-javascript-es2017-the-async-edition-618e28819711
JS Evolution
By Atul R
JS Evolution
Journey of Javascript
- 547