ECMAScript 2015 (aka version 6)
ECMAScript 5
...
ECMAScript 1
Before the beginning
Classes
Arrow functions
Iterators (and generators)
Proxies
Destructuring
let and const
and many more
"ES4 was so large and so innovative that there were doubts about whether it could be successfully specified and implemented."
Douglas Crockford
The proposal for ES4 had some successors like ActionScript 2.0 and JScript 10.0
Final draft of ES3 was published on 1999.
Final draft of ES5 was published on 2009.
2006 - First release of jQuery
2006 - AJAX is standardized by the W3C
2004 - Release of Gmail
2000 - End of the world
Some features ES5 introduced:
undefined=1;
alert(undefined == 1); // true
Final draft of ES2 was published in 1998
ES3 introduced:
Final draft of ES1 was published in 1997
abstract | do | import | short |
boolean | double | instanceof | static |
byte | enum | int | super |
case | export | interface | switch |
catch | extends | long | synchronized |
char | final | native | throw |
class | finally | package | throws |
const | float | private | transient |
debugger | goto | protected | try |
default | implements | public | volatile |
Out of 40 future reserved words in ES2, 38 are also a Java keyword.
The night is dark and full of terrors.
Other things happening in 1995: invention of Java, Ruby and PHP
Any JavaScript error would open a pop-up.
There was no array or object literals.
The constructor property couldn't be set by assignment
The Number constructor would throw if the parameter could not be converted successfully
Number('some string');
If at least one of the operands of the equals operator was Boolean, undefined or Number it will then coerse both operands to Number.
if(new Object() == false) {}
(still in beta - v0.38)
undefined = void jsconfuy;
if (typeof Object.create != 'function') {
Object.create = Function('o',
'var F = Function();' +
'F.prototype = o;return new F();');
}
"JavaScript at 20" by Brendan Eich
"Virtual Machines, JavaScript and Assembler" by Scott Hanselman
Evolution of JavaScript III