JavaScript domina la web, y ECMAScript, el núcleo del lenguaje, está madurando. La nueva especificación (ES6 o JS2), prevista para mediados de año, trae consigo numerosas innovaciones que ya se pueden probar. Firefox ofrece actualmente la mejor compatibilidad , pero también es posible usar polyfills mediante transpiladores como Google Traceur . A continuación, se presenta un breve resumen de las nuevas características de ES6.
La nueva palabra clave let funciona mucho mejor que var : el alcance ahora se comporta exactamente como en otros lenguajes (C / C ++, Java), por lo que los bloques if ahora también tienen su propio alcance. También se repara la elevación, es decir, la presentación de declaraciones de variables (no asignaciones de valor) dentro del alcance respectivo:
console.log(x); var x = 'foo'; // undefined console.log(y); let y = 'bar'; // not initialized
La lista de otras innovaciones es larga: constantes (const), valores predeterminados para funciones (function pow(a,b=2) { return Math.pow(a,b); }), una nueva notación para funciones (let pow = (a,b=2) => Math.pow(a,b);), multitud de nuevas funciones (repeat(), contains(), startsWith(), find(), findIndex()), la nueva construcción de bucle para ... de.
También cabe mencionar los nuevos tipos de datos Set, Map, Proxy y Symbol, la posibilidad de importar (partes de otros) archivos JavaScript mediante `import`, y una nueva sintaxis intuitiva para clases y herencia. Sin embargo, a menudo se trata de pequeñas pero muy esperadas funcionalidades como la posibilidad de incluir saltos de línea en literales de cadena (nótese el uso de comillas especiales).:
`foo bar`
JavaScript ha sido durante mucho tiempo mucho más que una simple herramienta para pequeños trucos web: se utiliza para crear aplicaciones web potentes y de alto rendimiento, tan buenas como sus versiones de escritorio. Gracias a la gran cantidad de nuevas funciones útiles y al soporte existente para ES6, programar es el doble de placentero.
¿Quién no siempre ha querido comprobar la igualdad de dos números con la ayuda de la nueva constante Number.EPSILON , cuyo valor es la diferencia entre 1 y el siguiente valor de punto flotante más alto?
let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;