SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
ECMAScript 6
As evoluções na plataforma Javascript.
Contextualização
● O intuito desta apresentação é expor alguns dos recursos que estão disponíveis na
nova versão da linguagem;
● Demonstrar exemplo de sintaxe e utilização das novas features;
● Apresentar novos conceitos inseridos na linguagem;
ECMAScript 6 - Visão geral
1. Constants
2. Scoping
3. Arrow Functions
4. Extended Parameter
5. Template Literals
6. Extended Literals
7. Enhanced Object Properties
8. Destructuring Assignment
9. Modules
10. Classes
11. Iterators
12. Generators
13. Map/Set E Weak..
14. Typed Arrays
15. New Methods
16. Internationazation & Localization
17. Meta-Programming
18. Promises
Code: Output:
Constants
Variáveis imutáveis, recebem um valor na inicialização e esse valor permanece até o
final de sua vida útil.
● Seu escopo equivale ao let
Constants
Equivalente no ES5 (ESMAScript 5).
Code:
Scoping
Criação de novos escopos com “{}”, isso permite que novos escopos sejam criados de
maneira mais fácil. No ES5 (ESMAScript 5) isso é era possível através da criação de
funções.
Code: Output:
Scoping
Equivalente no ES5 (ESMAScript 5).
Code:
Scoping
Let
Novo modificador que define um escopo local para variável, e ao contrário do
modificador “var” este novo modificador não participa do hoisting.
Code: Output:
Arrow Functions
● Muito semelhante ao Lambda do Java, essa funcionalidade tem se tornado muito
comum na maiorias das linguagens modernas. Ela tem o principio de tornar a
criação de código menos verbosa.
● Utilização mais intuitiva do this, com a implementação do this léxico na
linguagem, agora o this fica amarando ao contexto e não mais a onde a função é
chamada.
Arrow Functions
Code: Output:
Arrow Functions
Equivalente no ES5 (ESMAScript 5).
Code:
Extended Parameter
Default Parameter Values
Dá a possibilidade de definição de um valor padrão para os parâmetros de um método
Code: Output:
Extended Parameter
Equivalente no ES5 (ESMAScript 5).
Code:
Extended Parameter
Rest Parameter
Um opção que permite receber um numero variado de argumentos e associando-os a
uma referencia.
Code: Output:
Extended Parameter
Equivalente no ES5 (ESMAScript 5).
Code:
Extended Parameter
Spread Operator
Um opção que permite receber um numero variado de argumentos e associando-os a
uma referencia.
Code: Output:
Não existe uma equivalência no ES5 (ESMAScript 5). Mas para ilustrar qual a
diferença se usar o operador, observe o exemplo abaixo.
Code: Output:
Extended Parameter
Template Literals
String Interpolation
Interpolação de expressões com variáveis dentro de um string, tornando mais fácil a do
seu conteúdo. Para criar o template deve-se usar a crase “ ` ”.
Code:
Output:
Template Literals
Tagged template literals
Funciona parecido com o spread operator, passando como parâmetro para a tag
function a string template e um rest parameter com as variáveis dinâmicas.
Code:
Template Literals
Tagged template literals
Funciona parecido com o spread operator, passando como parâmetro para a tag
function a string template e um rest parameter com as variáveis dinâmicas.
Output:
● Binary & Octal Literal
● Unicode String & RegExp Literal
Code:
ES5
Extended Literals
Enhanced Object Properties
Property Shorthand
Associação implícita por nome de propriedades.
Code:
Output:
Enhanced Object Properties
Equivalente no ES5 (ESMAScript 5).
Code:
Enhanced Object Properties
Computed Property Names
Declaração de nome de propriedade através de expressão.
Code:
Output:
Enhanced Object Properties
Equivalente no ES5 (ESMAScript 5).
Code:
Enhanced Object Properties
Method Properties
Abreviação na declaração de métodos como propriedades.
Code:
Output:
Enhanced Object Properties
Equivalente no ES5 (ESMAScript 5).
Code:
Destructuring Assignment
Array Matching
De composição de array em variáveis.
Code:
Output:
Destructuring Assignment
Equivalente no ES5 (ESMAScript 5).
Code:
Destructuring Assignment
Object Matching, Shorthand Notation
De composição de propriedades de objetos em variáveis. Baseada em assignação por
nome.
Code:
Output:
Destructuring Assignment
Equivalente no ES5 (ESMAScript 5).
Code:
Destructuring Assignment
Object Matching, Deep Matching
Permite mapear a assignação desejada.
Code:
Output:
Destructuring Assignment
Equivalente no ES5 (ESMAScript 5).
Code:
Destructuring Assignment
Parameter Context Matching
Permite mapear a assignação desejada quando se refere a parâmetros de functions.
Code:
Output:
Destructuring Assignment
Equivalente no ES5 (ESMAScript 5).
Code:
Destructuring Assignment
Fail-Soft Destructuring
Manuseio ante falhas na assignação.
Code:
Output:
Modules
Suporte nativo a criação de módulos. Isso é uma importante ferramenta para
organização de código, reaproveitamento e para evitar poluição do escopo global.
Code:
Classes
Foi adicionado uma espécie de açúcar sintático auxilia a criação de objetos
(Prototypes) para quem vem de linguagens com paradigma OO (Object-oriented)
Code:
Classes
Equivalente no ES5 (ESMAScript 5).
Code:
Iterators
Suporte a customização do comportamento de iterações, permite criar e manipular
iterações. Obrigatoriamente deve possuir um método chamado [Symbol.iterator] e
usar yield para retornar a resposta.
Code: Output:
Generators
Funções de controle de fluxo que gerenciam as chamadas, elas começam, param e
retornam o fluxo de execução. Sempre retorna um objeto que obedece o Iterador
Protocol ({ value, done }).
Code: Output:
Map/Set E Weak Map/Set
Map/Set
Estruturas de dados de mapa e conjunto.
Code: Output:
Map/Set E Weak Map/Set
Equivalente no ES5 (ESMAScript 5).
Code:
Map/Set E Weak Map/Set
Weak Map/Set
● Estruturas de dados de mapa e conjunto com fracas referências. Isso significa que
caso não haja referência para o objeto inserido ele será coletado pelo GC.
● Serve como um repositório fechado, não é possível recuperar os objetos depois de
armazenados, apenas apagá-los ou verificar se estão contidos dentro container.
Code:
Typed Arrays
● ArrayBuffer: um buffer binário genérico, de tamanho fixo que não pode ter seu
conteúdo alterado diretamente.
● Views: Novos objetos criados para manusear com mais eficiências que a API
Array, um typed array não passa no teste Array.isArray().
● DataView: sua função é permitir a navegação em estruturas complexas com
diferentes tipos de dados.
Typed Arrays
Typed Arrays
Code: Output:
New Methods
Novos métdos adicionados a APIs já existentes :
● Array Element Finding
● Object Property Assignment
● String Repeating
● String Searching
● Number Type Checking
● Number Comparison
● Number Truncation
● ...
New Methods
Code:
New Methods
Output:
Internationalization & Localization
● Collections
● Number
● Currency
● Date/Time
Internationazation & Localization
Code: Output:
Meta-Programming
● Proxy: Define uma espécie de hook para objeto em runtime-time level. Permite
alterar ou adicionar comportamentos ao objeto.
● Reflection: permite e facilita acesso a Metadados e Meta-operadores (dos do
Prototype).
Code: Output:
Promises
Novo objeto nativo usado para execução de processos assíncronos que tomam muito
tempo, baseado no conceito de promessa de uma retorno após dado processamento. A
promise possui estados (pendente, rejeitado e realizada) e ao final chama uma ação
para de sucesso ou para falha.
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Promise
Promises
Code: Output:
Promises
Code:
Promises
Output:
Outras features
1. Symbol Type
2. Enhcaned Regular Expression
3. Promise Combination
Bibliografia
http://es6-features.org
http://www.2ality.com/2015/07/regexp-es6.html
https://www.infoq.com/br/presentations/ecmascript-6-novidades
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference
http://jsrocks.org/pt-br/2014/11/es6-playing-with-the-new-javascript
https://www.keithcirkel.co.uk/metaprogramming-in-es6-symbols/
http://www.2ality.com/2015/09/typed-arrays.html
https://github.com/mdn/promises-test/blob/gh-pages/index.html
Dúvidas??

Mais conteúdo relacionado

Mais procurados

Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Danival Calegari
 
Treinamento Oracle Forms
Treinamento Oracle FormsTreinamento Oracle Forms
Treinamento Oracle FormsFelipe Goulart
 
Grupo de estudo - Kotlin
Grupo de estudo - KotlinGrupo de estudo - Kotlin
Grupo de estudo - KotlinAndré Justi
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#André Luiz
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPLeonardo Soares
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosDanilo Braga
 
TDC 2014 - Java 8: Expressões Lambda e API de Stream
TDC 2014 - Java 8: Expressões Lambda e API de StreamTDC 2014 - Java 8: Expressões Lambda e API de Stream
TDC 2014 - Java 8: Expressões Lambda e API de StreamDanival Calegari
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação FuncionalTales Andrade
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidVinícius Thiengo
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.netAndre Nascimento
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraDextra
 

Mais procurados (20)

plsql oracle
plsql oracleplsql oracle
plsql oracle
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
Introdução ao Java 5
Introdução ao Java 5Introdução ao Java 5
Introdução ao Java 5
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
 
Comandos e expressões
Comandos e expressõesComandos e expressões
Comandos e expressões
 
Treinamento Oracle Forms
Treinamento Oracle FormsTreinamento Oracle Forms
Treinamento Oracle Forms
 
Grupo de estudo - Kotlin
Grupo de estudo - KotlinGrupo de estudo - Kotlin
Grupo de estudo - Kotlin
 
SubProgramas
SubProgramasSubProgramas
SubProgramas
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHP
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos Básicos
 
Intro à Graphql
Intro à GraphqlIntro à Graphql
Intro à Graphql
 
TDC 2014 - Java 8: Expressões Lambda e API de Stream
TDC 2014 - Java 8: Expressões Lambda e API de StreamTDC 2014 - Java 8: Expressões Lambda e API de Stream
TDC 2014 - Java 8: Expressões Lambda e API de Stream
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
Php Básico - Parte 1
Php Básico - Parte 1Php Básico - Parte 1
Php Básico - Parte 1
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação Funcional
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI Android
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.net
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 

Semelhante a ECMAScript 6 recursos

Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptAndre Baltieri
 
Estruturas blade-repeticao
Estruturas blade-repeticaoEstruturas blade-repeticao
Estruturas blade-repeticaoRenato Lucena
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Vinicius Pulgatti
 
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptTDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptRogério Moraes de Carvalho
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINTchelinux
 
Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7David Willian
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
Dito Tech Talk RSpec
Dito Tech Talk RSpecDito Tech Talk RSpec
Dito Tech Talk RSpecguest49d83b2
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 

Semelhante a ECMAScript 6 recursos (20)

EscmaScript
EscmaScriptEscmaScript
EscmaScript
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScript
 
Behaviour-Driven Development com Ruby
Behaviour-Driven Development com RubyBehaviour-Driven Development com Ruby
Behaviour-Driven Development com Ruby
 
Estruturas blade-repeticao
Estruturas blade-repeticaoEstruturas blade-repeticao
Estruturas blade-repeticao
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptTDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEIN
 
Introdução ao GraphQL
Introdução ao GraphQLIntrodução ao GraphQL
Introdução ao GraphQL
 
Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7Java Primeiros Passos - Cap 7
Java Primeiros Passos - Cap 7
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
Dito Tech Talk RSpec
Dito Tech Talk RSpecDito Tech Talk RSpec
Dito Tech Talk RSpec
 
Palestra
PalestraPalestra
Palestra
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 

ECMAScript 6 recursos