Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
Lee el bug 380236 para estar al día del progreso de desarrollo de JavaScript 1.8.
Usando JavaScript 1.8
Para poder usar algunas de las nuevas características de JavaScript 1.8 en el HTML, usar:
<script type="application/javascript;version=1.8"> ... su código aquí ... </script>
Cuando uses la Shell de JavaScript, componentes XPCOM de JavaScript, o elementos <script>
XUL <script>
, se usará automaticamente la última versión de JS (JS1.8 en Mozilla 1.9), lee (bug 381031, bug 385159).
Las características que requieren el uso de las nuevas palabras clave "yield" y "let" requiere que especifique la versión 1.7 o mayor ya que el código existente podría usar estas palabras clave como variables o nombres de función. Las características que no introducen nuevas palabras claves (como el generador de expresiones) pueden ser usadas sin especificar la versión de JavaScript.
Cierres de Expresión
Esta adición es simplemente una manera más simplificada de escribir funciones sencillas, dándole al lenguaje algo similar al típico cálculo Lambda.
JavaScript 1.7 y versiones anteriores:
function(x) { return x * x; }
JavaScript 1.8:
function(x) x * x
Esta sintaxis te permite dejar fuera las llaves y las declaraciones 'return' - haciéndolas implícitas. No hay beneficio adicional en escribir código de esta manera, sino que el único es tener un código prácticamente mas corto.
Ejemplos:
Una manera simplificada para vincular event listeners:
document.addEventListener("click", function() false, true);
Usando esta notación con algunas de las funciones desde JavaScript 1.6:
elems.some(function(elem) elem.type == "text");
Generador de Expresiones
Esta adición te permite simplemente crear generadores (los cuales fueron introducidos en JavaScript 1.7). Típicamente debería crear una función personalizada la cual podría tener un impacto sobre esta, pero esta adición le permite usar sintaxis de comprensión de arrays para crear una declaración de generador idéntica.
En JavaScript 1.7, podrías escribir algo como lo siguiente para crear un generador personalizado para un objeto:
function add3(obj) { for ( let i in obj ) yield i + 3; } let it = add3(someObj); try { while (true) { document.write(it.next() + "<br>\n"); } } catch (err if err instanceof StopIteration) { document.write("End of record.<br>\n"); }
En JavaScript 1.8, puedes eludir esto creando una función para un generador personalizado usando una expresión del generador:
let it = (i + 3 for (i in someObj)); try { while (true) { document.write(it.next() + "<br>\n"); } } catch (err if err instanceof StopIteration) { document.write("End of record.<br>\n"); }
Las expresiones del generador también pueden ser pasadas, como valores, a una función. Esto es particularmente notable ya que los generadores no son ejecutados hasta que sean absolutamente necesarios (no como una situación de comprensión de arrays típica, donde los arrays son construidos antes de tiempo ). Un ejemplo de la diferencia puede verse aquí:
Usando JavaScript 1.7 Comprensión de Arrays
handleResults([ i for ( i in obj ) if ( i > 3 ) ]); function handleResults( results ) { for ( let i in results ) // ... }
Usando JavaScript 1.8 Generador de Expresiones
handleResults( i for ( i in obj ) if ( i > 3 ) ); function handleResults( results ) { for ( let i in results ) // ... }
La diferencia entre los dos ejemplos radica en que usando el generador de expresiones, solo tendría que recorrer sobre la estructura 'obj' una sola vez, en total, en lugar de una vez en la comprensión de la matriz, y de nuevo cuando ocurran iteraciones a través de la misma.
Más extras sobre Arrays
Existen dos nuevos métodos de iteracion Array
incluidos en JavaScript 1.8, especificamente:
reduce()
- ejecuta una función en cada elemento en el array y colecciona los resultados de llamadas previas:reduceRight()
- ejecuta una función en cada objeto del array y colecciona los resultados de llamadas previas, pero en orden inverso.
Cambios en destructuracion for..in
Novedades en JavaScript_1.7#Iteración sobre objetos (bug 366941).
Cambios próximos
Los cambios que se espera que lleguen con JavaScript 1.8 incluyen:
- Codificación - Decodificacion en JSON.
- Sintaxis slice
- Destructuracion generalizada for...in
También puedes ver