Slides : thib.me/talks/
Thibaud Colas - @thibaud_colas
Ingénieur Développeur @
Liste de features sur GitHub : lukehoban/es6features
Sucre syntaxique utilisable dès aujourd'hui
Compatibles Traceur & Firefox 24+
Versions originales et transpilées sur GitHub :
thibaudcolas/es6-mix-it
var addES5 = function(x, y) {
y = y ? y : 5;
return x + y;
};
var addES6 = function(x, y = 5) {
return x + y;
};
var addES6Compiled = function(x) {
var y = arguments[1] !== (void 0) ? arguments[1] : 5;
return x + y;
};
Remplace (typeof myVar === "undefined")
var Circle = function(x, y, r) {
this.center = {
x: x,
y: y
};
this.radius = r;
};
var c = new Circle(3, 5, 10);
// ES5
var centerX = c.center.x;
var centerY = c.center.y;
var {x: centerX, y: centerY} = c.center; // ES6
var {x, y} = c.center; // ES6 raccourci
Assignement multiple selon un pattern
var getDiameterES5 = function(c) {
return c.radius * 2;
};
var getDiameterES6 = function({radius: r}) {
return r * 2;
};
var getDiameterES6Compiled = function($__0) {
var r = $__0.radius;
return r * 2;
};
Fonctionne aussi pour les paramètres !
var squareES5 = function (x) {
return x * x;
};
var squareES6 = x => x * x;
var squareES6Compiled = (function(x) {
return x * x;
});
Syntaxe plus lisible, return
implicite
Programmation fonctionnelle FTW
var ES5Tree = function() {
var self = this; // Contexte A
self.age = 0;
setInterval(function () {
self.age++; // Contexte B :(
}, 2000);
};
var ES6Tree = function() {
this.age = 0; // Contexte C
setInterval(() => {
this.age++; // Contexte C toujours !
}, 2000);
};
var tree = new ES6Tree();
Par Thibaud Colas, partage en CC0