SlideShare una empresa de Scribd logo
UNA TAPA DE ECMASCRIPT 6 
EL JAVASCRIPT QUE VIENE... ;-) 
EDUARD TOMÀS - PASIONA 
@EIXIMENIS 
HTTP://GEEKS.MS/BLOGS/ETOMAS 
HTTP://WWW.PASIONA.COM
UN POCO DE HISTORIA 
• Inventado por Brendan Eich para Netscape 
• Inicialmente basado en Scheme (dialecto de lisp) 
• Migró a una sintaxis “tipo C” y se llamó LiveScript 
• Renombrado a JavaScript después del acuerdo con Sun 
(1995)
UN POCO DE HISTORIA 
• Microsoft lo “copia” y lanza Jscript 
• Otros navegadors lo “copian” y mantienen el nombre 
JavaScript 
• El 1997 es estandarizado como ECMAScript
ECMASCRIPT 
• 1: Primera versión (1997) 
• 2: Retoques para adaptarse a la ISO (1998) 
• 3: Primera revisión (expresiones regulares, try/catch,...) (1999) 
• 4: Versión abandonada 
• 5: Segunda revisión (strict mode, get/set, ....) (2009) 
• 5.1: Retoques para adaptarse a la ISO (2011) 
• 6 (Harmony): WIP 
• 7: WIP
ECMASCRIPT 6 
• JavaScript es un lenguaje de espíritu funcional atrapado en un 
cuerpo procedural 
• ES6 hace especial enfásis en las capacidades funcionales del 
lenguaje 
• Implementación en los navegadores: En progreso - 
http://kangax.github.io/compat-table/es6/
1 - SCOPES LOCALES Y CONSTANTES 
• Definir una variable con let en lugar de var la define en el 
scope local 
• Definir una variable con const define una constante 
• let no aplica hoisting
2 - DESTRUCTURING 
• Array patern 
• let [a, b, c] = [10, 20, “30”]; 
• Válido en retornos de funciones 
• Object pattern 
• let {a: pa, b: pb} = {a: 10, b:30};
3 - PARÁMETROS X DEFECTO & REST (AKA VARIADIC) 
• No más tests de undefined 
• function foo(a, b=10) 
• function variadic(a,b,...v)
4 - OPERADOR SPREAD 
• Convierte un objeto/array en n parámetros 
• Extremadamente potente combinado con apply 
• x.f(...a) === f.apply(x, a);
5 - OPERADOR ARROW (AKA LAMBDA FUNCTIONS) 
• Simplifica la definición de funciones inline 
(a) => a*a equivale a 
(function(a) { return a*a;}).bind(this);
6 - SHORTHAND OBJECT LITERAL 
• Al crear un objeto se puede omitir el nombre de la 
propiedad si esta coincide con el de la variable a partir de 
la cual se crea. 
• ES5 {url: url, method: ‘POST’} 
• ES6: {url, method:’POST’}
7 – ITERADORES, ITERABLES 
• Iterador: Objecto con método next() que devuelve tuplas 
{done, value} (bool, tipo) 
• Iterable: Objeto que contiene el método iterator() que 
devuelve un iterador
8 – FOR..OF 
• Nuevo bucle para iterar sobre iterables. 
• Itera una vez sobre cada uno de los valores del iterador 
devuelto por el iterable.
9 – GENERATORS (CORUTINAS) 
• function* para crear un generador 
• Usar yield para devolver un valor y permitir la reentrada 
• Un generador es un iterador y es un iterable 
• Un generador se lee una sola vez (luego el iterador ya ha 
sido consumido)
10 – MAPS & SETS 
• Diccionarios clave, valor. 
• Los objetos de JS se comportan como mapas salvo que las 
claves son convertidas a cadenas. En los Maps eso no ocurre 
• Son iterables (for..of) 
• Maps: Diccionarios clave, valor. Método has va por clave. 
• Sets: Conjunto de valores. Método has va por valor.
11 - CLASES 
• ES6 ofrece clases pero eso no convierte al lenguaje en 
estático 
• Las clases de ES6 son syntax sugar sobre los prototipos 
• Se definen con class y se insancian con new
11 - CLASES
11 – CLASES (II) 
• Herencia entre clases con extends 
• Se pueden redefinir métodos de clase base (simplemente 
redeclarándolos). 
• Se puede usar super() para llamar a la implementación de la 
clase base.
12 - PROXIES 
• Permite modificar la semántica de un objeto existente de 
forma “transparente”. 
• Permiten escenarios de AOP.
13 - PROMISES 
• Una promise es un objeto que representa una tarea a ser 
realizada en un futuro. 
• Muy usadas en JavaScript, pero no eran nativas. Cada 
librería usaba su propia implementación 
• ES6 las incorpora de série, basándose en el estàndard A+
14 - MÓDULOS 
• Actualmente dos sistemas de módulos no natives tienen 
preferència 
• AMD 
• Asíncrono, Navegador, No soporta referencias circulares 
• CommonJS 
• Síncrono, Servidor (Aka Node), Soporta referencias circulares
14 - MÓDULOS 
• ES6 incorpora de forma nativa un sistema de módulos 
• Síncrono / asíncrono 
• Sintaxis todavía más compacta que la de CommonJS
14 - MÓDULOS 
• Definición
14 - MÓDULOS 
• Uso: Los exports del módulo se important en un objeto local 
• Uso: import * importa todos los exports del módulo en un 
espacio de nombres
14 - MÓDULOS 
• Un módulo puede exportar por defecto un solo elemento 
(muy común tanto en nodejs como en frontend)

Más contenido relacionado

PPTX
Estructura for ciclo bucle.
PDF
RoR y eLearning 2.0
PDF
ECMAScript 6, o cómo usar el JavaScript del futuro hoy
PDF
JavaScript Avanzado
PDF
T1 trabajo1navarrozuaraelisaramosruizpedro
PDF
Desarrollo web en Nodejs con Pillars por Chelo Quilón
PDF
Javascript Básico
PPTX
Javascript + Angular Sesion 1
Estructura for ciclo bucle.
RoR y eLearning 2.0
ECMAScript 6, o cómo usar el JavaScript del futuro hoy
JavaScript Avanzado
T1 trabajo1navarrozuaraelisaramosruizpedro
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Javascript Básico
Javascript + Angular Sesion 1

Similar a Una tapa de ecmascript 6 (20)

PDF
Javascript - 2014
PDF
ECMAScript 6
PDF
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
PDF
JavaScript
PDF
Diseño web clase03
PDF
Javascript
DOCX
Java script tarea
PPTX
javaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
PPTX
Presentación JavaScript
DOCX
Guía JavaScript
PPTX
JavaScript1ckjdfiudafhadvjsadgdhsagcjhASBjhcSJHcSAc
PDF
T1 trabajo1navarrozuaraelisaramosruizpedropresentacion
PDF
PDF
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
PPTX
JavaScript1IAxdxdxdxdxdxdxdxddddddd.pptx
PPTX
hectorguzmanvilchisjajajajajajajaja.pptx
PPTX
Presentacion de JavaScript sobre las mejores practicas
PDF
6.2. js
PDF
Javascript Talento Tech Completo Para tarea final
Javascript - 2014
ECMAScript 6
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript
Diseño web clase03
Javascript
Java script tarea
javaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Presentación JavaScript
Guía JavaScript
JavaScript1ckjdfiudafhadvjsadgdhsagcjhASBjhcSJHcSAc
T1 trabajo1navarrozuaraelisaramosruizpedropresentacion
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
JavaScript1IAxdxdxdxdxdxdxdxddddddd.pptx
hectorguzmanvilchisjajajajajajajaja.pptx
Presentacion de JavaScript sobre las mejores practicas
6.2. js
Javascript Talento Tech Completo Para tarea final
Publicidad

Más de Eduard Tomàs (20)

PPTX
Kubernetes: Do's, don'ts and why's
PPTX
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
PPTX
Escalando workloads serverless en Kubernetes con Keda
PPTX
C#9 - Más C# que nunca
PPTX
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
PPTX
Keda o como convertir Kubernetess en Serverless
PPTX
.NET Memoria y Rendimiento
PPTX
Containers en .NET (Dot Net 2018 - Spain)
PPTX
Esos contenedores, ¡a producción! (Commit Conf 2018)
PPTX
Codemotion 2015 - Bienvenido de nuevo c++
PPTX
El "peor" lenguaje del mundo
PPTX
Containerize a netcore application with aks
PPTX
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
PPTX
Aplicaciones de consola fáciles? Más quisieramos
PPTX
Serverless with Azure Functions and CosmosDb
PPTX
Docker y todo eso... más o menos
PPTX
Microservices: Yes or not?
PPTX
ASP.NET MVC Core
PPTX
Azure functions
PPTX
React native - Unleash the power of your device
Kubernetes: Do's, don'ts and why's
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
Escalando workloads serverless en Kubernetes con Keda
C#9 - Más C# que nunca
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
Keda o como convertir Kubernetess en Serverless
.NET Memoria y Rendimiento
Containers en .NET (Dot Net 2018 - Spain)
Esos contenedores, ¡a producción! (Commit Conf 2018)
Codemotion 2015 - Bienvenido de nuevo c++
El "peor" lenguaje del mundo
Containerize a netcore application with aks
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Aplicaciones de consola fáciles? Más quisieramos
Serverless with Azure Functions and CosmosDb
Docker y todo eso... más o menos
Microservices: Yes or not?
ASP.NET MVC Core
Azure functions
React native - Unleash the power of your device
Publicidad

Último (8)

PDF
simulacion de teoria de control para maquinas
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PDF
DIMENSIONADO DE UNA INSTALACION FOTOVOLTAICA.pdf
PPTX
sistemas de informacion.................
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
modelos de control para sistemas digitales
simulacion de teoria de control para maquinas
AutoCAD Herramientas para el futuro, Juan Fandiño
Derechos_de_Autor_y_Creative_Commons.pptx
Su punto de partida en la IA: Microsoft 365 Copilot Chat
DIMENSIONADO DE UNA INSTALACION FOTOVOLTAICA.pdf
sistemas de informacion.................
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
modelos de control para sistemas digitales

Una tapa de ecmascript 6

  • 1. UNA TAPA DE ECMASCRIPT 6 EL JAVASCRIPT QUE VIENE... ;-) EDUARD TOMÀS - PASIONA @EIXIMENIS HTTP://GEEKS.MS/BLOGS/ETOMAS HTTP://WWW.PASIONA.COM
  • 2. UN POCO DE HISTORIA • Inventado por Brendan Eich para Netscape • Inicialmente basado en Scheme (dialecto de lisp) • Migró a una sintaxis “tipo C” y se llamó LiveScript • Renombrado a JavaScript después del acuerdo con Sun (1995)
  • 3. UN POCO DE HISTORIA • Microsoft lo “copia” y lanza Jscript • Otros navegadors lo “copian” y mantienen el nombre JavaScript • El 1997 es estandarizado como ECMAScript
  • 4. ECMASCRIPT • 1: Primera versión (1997) • 2: Retoques para adaptarse a la ISO (1998) • 3: Primera revisión (expresiones regulares, try/catch,...) (1999) • 4: Versión abandonada • 5: Segunda revisión (strict mode, get/set, ....) (2009) • 5.1: Retoques para adaptarse a la ISO (2011) • 6 (Harmony): WIP • 7: WIP
  • 5. ECMASCRIPT 6 • JavaScript es un lenguaje de espíritu funcional atrapado en un cuerpo procedural • ES6 hace especial enfásis en las capacidades funcionales del lenguaje • Implementación en los navegadores: En progreso - http://kangax.github.io/compat-table/es6/
  • 6. 1 - SCOPES LOCALES Y CONSTANTES • Definir una variable con let en lugar de var la define en el scope local • Definir una variable con const define una constante • let no aplica hoisting
  • 7. 2 - DESTRUCTURING • Array patern • let [a, b, c] = [10, 20, “30”]; • Válido en retornos de funciones • Object pattern • let {a: pa, b: pb} = {a: 10, b:30};
  • 8. 3 - PARÁMETROS X DEFECTO & REST (AKA VARIADIC) • No más tests de undefined • function foo(a, b=10) • function variadic(a,b,...v)
  • 9. 4 - OPERADOR SPREAD • Convierte un objeto/array en n parámetros • Extremadamente potente combinado con apply • x.f(...a) === f.apply(x, a);
  • 10. 5 - OPERADOR ARROW (AKA LAMBDA FUNCTIONS) • Simplifica la definición de funciones inline (a) => a*a equivale a (function(a) { return a*a;}).bind(this);
  • 11. 6 - SHORTHAND OBJECT LITERAL • Al crear un objeto se puede omitir el nombre de la propiedad si esta coincide con el de la variable a partir de la cual se crea. • ES5 {url: url, method: ‘POST’} • ES6: {url, method:’POST’}
  • 12. 7 – ITERADORES, ITERABLES • Iterador: Objecto con método next() que devuelve tuplas {done, value} (bool, tipo) • Iterable: Objeto que contiene el método iterator() que devuelve un iterador
  • 13. 8 – FOR..OF • Nuevo bucle para iterar sobre iterables. • Itera una vez sobre cada uno de los valores del iterador devuelto por el iterable.
  • 14. 9 – GENERATORS (CORUTINAS) • function* para crear un generador • Usar yield para devolver un valor y permitir la reentrada • Un generador es un iterador y es un iterable • Un generador se lee una sola vez (luego el iterador ya ha sido consumido)
  • 15. 10 – MAPS & SETS • Diccionarios clave, valor. • Los objetos de JS se comportan como mapas salvo que las claves son convertidas a cadenas. En los Maps eso no ocurre • Son iterables (for..of) • Maps: Diccionarios clave, valor. Método has va por clave. • Sets: Conjunto de valores. Método has va por valor.
  • 16. 11 - CLASES • ES6 ofrece clases pero eso no convierte al lenguaje en estático • Las clases de ES6 son syntax sugar sobre los prototipos • Se definen con class y se insancian con new
  • 18. 11 – CLASES (II) • Herencia entre clases con extends • Se pueden redefinir métodos de clase base (simplemente redeclarándolos). • Se puede usar super() para llamar a la implementación de la clase base.
  • 19. 12 - PROXIES • Permite modificar la semántica de un objeto existente de forma “transparente”. • Permiten escenarios de AOP.
  • 20. 13 - PROMISES • Una promise es un objeto que representa una tarea a ser realizada en un futuro. • Muy usadas en JavaScript, pero no eran nativas. Cada librería usaba su propia implementación • ES6 las incorpora de série, basándose en el estàndard A+
  • 21. 14 - MÓDULOS • Actualmente dos sistemas de módulos no natives tienen preferència • AMD • Asíncrono, Navegador, No soporta referencias circulares • CommonJS • Síncrono, Servidor (Aka Node), Soporta referencias circulares
  • 22. 14 - MÓDULOS • ES6 incorpora de forma nativa un sistema de módulos • Síncrono / asíncrono • Sintaxis todavía más compacta que la de CommonJS
  • 23. 14 - MÓDULOS • Definición
  • 24. 14 - MÓDULOS • Uso: Los exports del módulo se important en un objeto local • Uso: import * importa todos los exports del módulo en un espacio de nombres
  • 25. 14 - MÓDULOS • Un módulo puede exportar por defecto un solo elemento (muy común tanto en nodejs como en frontend)