SlideShare une entreprise Scribd logo
1  sur  26
Globalcode – Open4education
EcmaScript 6
Giovanni Bassi
giovanni@lambda3.com.br
@giovannibassi
Victor Cavalcante
victor@cavalcante.net
@vcavalcante
Globalcode – Open4education
Agenda
Por que?
Novidades
Valores padrão para parâmetros
let e const
Declaração concisa de função
Funções “flecha” 
Operador “spread”
Array comprehension
Quando?
Classes! o/
Módulos
Destructuring
Generators
Promises
Porque?
Globalcode – Open4education
Novidades
Globalcode – Open4education
Valores padrão para parâmetros
// ES 5
function inc(x, y) {
y = y || 1;
return x + y;
}
// ES 6
function inc(x, y = 1) {
return x += y;
}
Globalcode – Open4education
let
// ES 6
function doSomething() {
let N = 5;
if (someCondition) {
let N = 10;
doSomethingElse(N);
}
console.log(N); // 5
}
Globalcode – Open4education
const
const limit = 100;
limit = 200; // SyntaxError
Globalcode – Open4education
Declaração concisa de função
var Person = {
name: 'Joe',
hello() {
console.log('Ola ', this.name);
}
};
Globalcode – Open4education
Funções “flecha” =>
// ES 5
[1,2,3].map(function (x) {
return x * x;
});
// ES 6
[1,2,3].map(x => x * x);
let indefinido = () => {};
let um = () => 1;
Cuidado
com o
this!
Globalcode – Open4education
Operador “spread”
// ES 5
var max = Math.max.apply(null, [14, 3]);
// ES 6
var max = Math.max(...[14, 3]);
Globalcode – Open4education
Operador “spread”
function guarde(name, ...itens) {
itens.forEach(function (item) {
cofre[name].push(item)
});
}
guarde('João', 'cartas', 'dinheiro');
Globalcode – Open4education
Array comprehension
// ES 5
let quadrados = [1, 2].map(function (i) {
return i * I
});
// ES 6
quadrados = [for (i of [1, 2]) i * i];
Globalcode – Open4education
Array comprehension (com filtro)
// ES 5
let arrayComUm =[1,5].filter(function(i){
return i < 3;
});
// ES 6
arrayComUm = [for (i of [1,5]) if (i < 3) i];
Globalcode – Open4education
Array comprehension (aninhado)
let posicoesXadrez =
[for (x of 'abcdefgh'.split(''))
for (y of '12345678'.split('')) (x+y)];
Globalcode – Open4education
Classes o/
class Vehicle {
constructor(color) {
this.color = color;
this.speed = 0;
}
drive() {
this.speed = 40;
}
}
Globalcode – Open4education
Classes (herança)
class Car extends Vehicle {
constructor(brand, color) {
super(color);
this.brand = brand;
this.wheels = 4;
}
}
Globalcode – Open4education
Módulos
//mathlib.js
const HALF = 0.5;
export function sqrt(x) {
return Math.exp(HALF * Math.log(x));
}
//outroArquivo.js
import { sqrt } from 'mathlib';
console.log(sqrt(16));
Globalcode – Open4education
Destructuring (arrays)
var [a,b,c] = [1,2,3];
console.log(a, b, c); // 1 2 3
let nums = () => [1,2,3];
let [,,tres] = nums()
console.log(tres); // 3
function foo([um, dois], tres) {
console.log(um, dois, tres);
}
foo([1, 2], 3); // 1 2 3
Globalcode – Open4education
Destructuring (objetos)
var { foo, bar } = { foo: "lorem", bar:
"ipsum" };
// foo: "lorem", bar: "ipsum"
var { foo:f, bar:b } = { foo: "lorem",
bar: "ipsum" };
// f: "lorem", b: "ipsum"
try {} catch ({type, message, filename,
lineNumber}) {}
Globalcode – Open4education
Generators
function* foo() {
yield 'foo';
yield 'bar';
yield 'baz';
}
var x = foo();
console.log(x.next().value); // 'foo'
console.log(x.next().value); // 'bar'
console.log(x.next().value); // 'baz'
Globalcode – Open4education
Generators (além)
body = yield db.find('something');
Globalcode – Open4education
Promises nativas! (Criando)
var promise = new Promise((resolve,
reject) => {
if (/* tudo ok */) {
resolve("Funfou!");
}
else {
reject(new Error("quebrou"));
}
});
Globalcode – Open4education
Promises (consumindo)
promise.then(function(result) {
console.log(result); //Funfou!"
}, function(err) {
console.log(err); // Error: "quebrou"
});
Globalcode – Open4education
Quando?
Hoje (incompleto):
Node 0.11
Chrome Canary
Firefox Nightly
Transpilers diversos
Versão final
Era esperado no fim desse ano, mas...
... tudo indica que fica pronto no primeiro semestre do
ano que vem
... só então devemos ver suporte no Node (uso
imediato), e nos navegadores (mais lento – depende de
adoção)
Globalcode – Open4education
Obrigado!
Giovanni Bassi
giovanni@lambda3.com.br
@giovannibassi
Victor Cavalcante
victor@cavalcante.net
@vcavalcante

Contenu connexe

Tendances

[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...Loiane Groner
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4guestd521d1f
 
Beljug2010
Beljug2010Beljug2010
Beljug2010UFPA
 
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - ETipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - EPaulo Henrique Lerbach Rodrigues
 

Tendances (8)

Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
[Curso Java Basico - Orientacao a Objetos] Aula 33: Sobrecarga de metodos e c...
 
Orientacoes graphmatica
Orientacoes graphmaticaOrientacoes graphmatica
Orientacoes graphmatica
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
Beljug2010
Beljug2010Beljug2010
Beljug2010
 
Pilhas e filas
Pilhas e filasPilhas e filas
Pilhas e filas
 
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - ETipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
Tipos Primitivos - Preparatório Certificação - OCAJP7 - Aula 2 - E
 

Similaire à Apresentando o EcmaScript 6

TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresFernando Franquini
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Rodrigo Branas
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo Branas
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-Cosmarcf
 
Evolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptEvolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptJean Carlo Emer
 
Light Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalLight Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalEmanuel Gonçalves
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma JavaJoão Lourenço
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?Denis Costa
 
TDC2016SP - SparkMLlib Machine Learning na Prática
TDC2016SP -  SparkMLlib Machine Learning na PráticaTDC2016SP -  SparkMLlib Machine Learning na Prática
TDC2016SP - SparkMLlib Machine Learning na Práticatdc-globalcode
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na PráticaEiti Kimura
 

Similaire à Apresentando o EcmaScript 6 (20)

TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)
 
Tutorial JavaFX simples
Tutorial JavaFX simplesTutorial JavaFX simples
Tutorial JavaFX simples
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
 
Evolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScriptEvolução e futuro do uso de paradigmas no JavaScript
Evolução e futuro do uso de paradigmas no JavaScript
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Principais novidades do PHP7
Principais novidades do PHP7Principais novidades do PHP7
Principais novidades do PHP7
 
Light Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalLight Talk sobre JavaScript Funcional
Light Talk sobre JavaScript Funcional
 
Javascript
JavascriptJavascript
Javascript
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Java7 tdc2011
Java7 tdc2011Java7 tdc2011
Java7 tdc2011
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma Java
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 
TDC2016SP - SparkMLlib Machine Learning na Prática
TDC2016SP -  SparkMLlib Machine Learning na PráticaTDC2016SP -  SparkMLlib Machine Learning na Prática
TDC2016SP - SparkMLlib Machine Learning na Prática
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
 

Plus de Giovanni Bassi

O que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosO que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosGiovanni Bassi
 
Analisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETAnalisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETGiovanni Bassi
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraGiovanni Bassi
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesGiovanni Bassi
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8Giovanni Bassi
 
Engenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployEngenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployGiovanni Bassi
 
Entrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresEntrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresGiovanni Bassi
 
.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2Giovanni Bassi
 
.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux.NET com contêineres Windows e Linux
.NET com contêineres Windows e LinuxGiovanni Bassi
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraGiovanni Bassi
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsGiovanni Bassi
 
Construindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsConstruindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsGiovanni Bassi
 
Um mergulho nos containers windows
Um mergulho nos containers windowsUm mergulho nos containers windows
Um mergulho nos containers windowsGiovanni Bassi
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET CoreGiovanni Bassi
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com dockerGiovanni Bassi
 
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Giovanni Bassi
 

Plus de Giovanni Bassi (20)

O que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosO que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviços
 
Sendo ágil com git
Sendo ágil com gitSendo ágil com git
Sendo ágil com git
 
Analisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETAnalisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NET
 
Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agora
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetes
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
 
Engenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployEngenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deploy
 
Entrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresEntrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineres
 
.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2
 
.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agora
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.js
 
Construindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsConstruindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.js
 
O Futuro do C#: C#8
O Futuro do C#: C#8O Futuro do C#: C#8
O Futuro do C#: C#8
 
Um mergulho nos containers windows
Um mergulho nos containers windowsUm mergulho nos containers windows
Um mergulho nos containers windows
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET Core
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com docker
 
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
 

Apresentando o EcmaScript 6