Un quinto de siglo

...y un poco más

@a0viedo

ECMAScript Overlods: TC39

ECMAScript 2015 (aka version 6)

ECMAScript 5

...

ECMAScript 1

Antes del comienzo

Cómo el proceso cambió

ES2015 -> ES5

Classes

Arrow functions

Iterators (y generators)

Proxies

Destructuring

let y const

y muchos más...

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

¿Más es mejor?

Adaptate

  • Understanding ECMAScript 6 - 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

No todo está perdido

La propuesta de ES4 tuvo algunos sucesores cómo ActionScript 2.0 y JScript 10.0

ES5 -> ES4 ES3

El último draft de ES3 es publicando en 1999

El último draft de ES5 es publicado en 2009

2006 - Primer release de jQuery

2006 - AJAX es estandarizado por W3C 

2004 - Release de Gmail

2000 - Fin del mundo

  • modo estricto
  • Function.prototype.bind
  • getters y setters
  • Métodos de alto orden para arrays (forEach, map, reduce, etc)
  • JSON
  • Object.seal y Object.freeze
  • undefined inmutable

¿Qué trajo ES5 de nuevo?

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

¡eso no es todo!

Aún si están en modo estricto

(function(){
  'use strict';
  var undefined = 42;
  console.log(undefined); // 42
})();

ES3 -> ES2

El último draft de ES2 fué publicado en 1998

  • try/catch
  • Comparación estricta (===)
  • instanceof
  • fn.apply
  • switch
  • function expressions
  • Array helpers (push, pop ,slice, concat, etc)
  • Expresiones regulares

¿Qué trajo de nuevo ES3?

ES2 -> ES1

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

ES2 -> ES1

El último draft de ES1 fué publicado en 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

De 40 palabras reservadas en ES2, 38 son también una palabra reservada en Java.

ES1 -> Mocha

The night is dark and full of terrors.

JavaScript es creado en Mayo de 1995 por Brendan Eich

Otras cosas que pasaban en el 1995: se inventaron Java, Ruby y PHP

Netscape Navigator 3.0

Cualquier error de JavaScript abría un pop-up

No habían array literales y objetos literales

La propiedad "constructor" no podía ser seteada

El constructor Number arrojaría un error si el parámetro no podía ser convertido exitosamente.

Number('some string');

Si alguno de los operandos de un operador == era Boolean, undefined o Number entonces coersionaría ambos a Number.

if(new Object() == false) {}

undefined.js

(todavía en versión beta - v0.38)

undefined = void DevFestBA;

!!

if (typeof Object.create != 'function') {
    Object.create = Function('o', 
        'var F = Function();' +
    	'F.prototype = o;return new F();');
}

A partir de ES2016

un release por año

el comite no sólo lo integran personas trabajando en los principales browsers

procesos más abiertos

Recursos

"JavaScript at 20" por Brendan Eich

"Virtual Machines, JavaScript and Assembler" por Scott Hanselman

Evolution of JavaScript III

Gracias!

@a0viedo

Made with Slides.com