The !future of JavaScript

Imagination

(v1.0)

React is now obselete

Starting from 2017 all jQuery releases will be entirely in CoffeScript

All versions of right-pad are vulnerable (CVE-2016-1337) 

TC39

ECMAScript 2015 (aka version 6)

ECMAScript 5

...

ECMAScript 1

Before the beginning

ES2015 -> ES5

Classes

Arrow functions

Iterators (and generators)

Proxies

Destructuring

let and const

and many more

Created with Highcharts 4.0.4 Pages 110 117 188 252 566 ES1 ES2 ES3 ES5 ES2015 0 100 200 300 400 500 600

ES2015 is kinda big

Start embracing it!

  • Understanding ECMAScript 6 - by Nicholas Zakas
  • Exploring ES6 - Axel Rauschmayer
  • YDKJS: ES6 & Beyond - Kyle Simpson

ES5 -> ES4

status: 409 (conflict)

aka JavaScript v2

"ES4 was so large and so innovative that there were doubts about whether it could be successfully specified and implemented."

Douglas Crockford

Codename Harmony

Not all is lost

The proposal for ES4 had some successors like ActionScript 2.0 and JScript 10.0

ES5 -> ES4 ES3

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

  • strict mode
  • getters and setters
  • Higher order array methods (forEach, map, reduce, etc)
  • JSON
  • Object.seal and Object.freeze
  • immutable undefined

Some features ES5 introduced:

undefined=1;
alert(undefined == 1); // true

ES3 -> ES2

Final draft of ES2 was published in 1998

  • try/catch
  • strict comparison
  • instanceof
  • fn.apply
  • switch
  • function expressions
  • Array helpers (push, pop ,slice, concat, etc)
  • Regular expressions

ES3 introduced:

ES2 -> ES1

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

ES2 future reserved words

Out of 40 future reserved words in ES2, 38 are also a Java keyword.

ES1 -> Mocha

The night is dark and full of terrors.

JavaScript is created in May 1995 by Brendan Eich

Other things happening in 1995: invention of Java, Ruby and PHP

Netscape Navigator 3.0

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) {}

undefined.js

(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();');
}

Resources

"JavaScript at 20" by Brendan Eich

"Virtual Machines, JavaScript and Assembler" by Scott Hanselman

Evolution of JavaScript III

Thanks!

@a0viedo

The !future of JavaScript

By Alejandro Oviedo García

The !future of JavaScript

A short overview of the history of JavaScript.

  • 2,402