Novedades de ECMAScript 2105 (ES6)
ECMAScript
ECMAScript se refiere a las nuevas características del estándar ECMA-262 conocidos como JavaScript, introducido después de ECMAScript 2015. Las nuevas versiones de las especificaciones ECMAScript se liberan anualmente, ES2016 será liberado y el ES2017 es el proyecto actual ECMAScript.
Definición de variables
Para solventar las deficiencias de las variables declaradas con _var, _hay dos nuevas palabras reservadas: _let _para declarar variables que cambian de valor y _const _para constantes. También se pueden declarar símbolos que son identificadores de tipos únicos e inmutables.
El problema de las variables declaradas con _var _está en que tienen ámbito de función con _let _no existe hasta que es declarada. Las variables con _var _son declaradas al principio del ámbito de la función o en el ámbito global.
Interpolación de variables en cadenas
La interpolación de variables en cadena facilita la construcción de strings y hace el código más legible. Los strings se hacen con las comillas invertidas o francesas ( ` )
const now = newDate(Date.now());
const message = `¡Hola ${now.getFullYear()}!`;
console.log(message); // ¡Hola 2016!
Desestructuración
Se ha incorporado la asignación desestructurada pudiendo hacer cosas como las siguientes en las asignaciones y en las llamadas a las funciones:
// Arrays
const array = [1, 2];
const [a, b] = array;
console.log(`${a}, ${b}`); // 1, 2
// Objects
constobject = { name: 'Jhon', age: 30};
const {name, age} = object;
console.log(`${name}, ${age}`); // Jhon, 30
// Functions
function whois({displayName: displayName, fullName: { firstName: name }}){
console.log(`${displayName} is ${name}`);
}
var user = {
id: 42,
displayName: "jdoe",
fullName: {
firstName: "Jhon",
lastName: "Doe"
}
};
whois(user); // Jhon Doe is jdoe
Operador spread
El operador spread permite a una expresión sea expandida en lugares donde se esperan múltiples argumentos como en llamadas a funciones, múltiples elementos para literales de _arrays _o múltiples variables para asignación desestructurada.
const array1 = [1, 2, 3];
const array2 = [...array1, 4, 5, 6]
console.log(array2); // Array [ 1, 2, 3, 4, 5, 6 ]
function func(x, y, z) {
console.log(`${x}, ${y}, ${z}`);
}
func(...array1); // 1, 2, 3
Clases
Anteriormente en JavaScript ya se podían definir clases haciendo uso de la propiedad prototype _aunque su sintaxis ahora se ha simplificado y hecho más parecida a otros lenguajes además de definir propiedades con su método _getter _y _setter.
class Vehiculo{
constructor() {
this._marca = 'Seat';
this._color = 'rojo';
this._kilometros = 100;
}
get color() {
return this._color;
}
set color(c) {
this._color = c;
}
}
class Coche extends Vehiculo{
get kilometros() {
return this._kilometros;
}
set kilometros(k) {
this._kilometros = k;
}
}
const coche = newCoche();
console.log(coche.color); // rojo
y otros features como:
- Objetos map y set
- Callback y promise
- Generadores
- Eventos
Para más información sobre ESMAScropt 6, vea el siguiente enlace: http://es6-features.org/