2011-02-04 10 views
11

He estado leyendo sobre el desarrollo continuo de JavaScript de Mozilla, hasta la versión 1.8.5: https://developer.mozilla.org/en/JavaScript.¿Cuál es la correlación entre ECMAScript 5 y JavaScript 1.8.5 en términos de características de idioma?

Mi pregunta es: ¿Cuál es la correlación entre JavaScript 1.8.5+ y ECMAScript 5+ en términos de funciones de idioma? ¿Alguna posibilidad de que las nuevas funciones de JavaScript de Mozilla (como generadores, comprensiones de matriz, etc.) formen parte de ECMAScript?

Solo quiero saber si vale la pena aprender las funciones de JavaScript 1.8.5 (y trabajar para convertirlas en navegadores no compatibles) o si debería olvidarme de JS 1.8.5 y centrarme en aprender/ajustar el nuevo Características de ECMAScript 5.

FYI: Mozilla habla de lo que están planeando traer JavaScript en cumplimiento de ECMAScript 5 aquí: https://developer.mozilla.org/En/JavaScript/ECMAScript_5_support_in_Mozilla

+3

Por mi parte, no quiere que el pythonisation que Mozilla está trayendo – Raynos

+1

Mi gran pregunta es cuando Javascript finalmente podrá manejar Unicode en sus expresiones regulares, al menos hasta [Nivel 1 de cumplimiento con UTS # 18: "Soporte básico de Unicode"] (http://unicode.org/reports/ tr18/# Basic_Unicode_Support). Es sinónimo de inútil en el mundo actual después de ASCII sin él. – tchrist

+0

Yo tampoco, creo que algunas de las características son geniales, pero es excesivo, la pitonización es una buena manera de expresarlo. Lo único que quiero es la capacidad de declarar tipos si así lo deseo (al igual que con ActionScript) –

Respuesta

12

JavaScript 1.8.5 es la implementación de Mozilla de ECMAScript con funciones adicionales. Es un superconjunto de la especificación ECMAScript (y de implementaciones actuales como IE, Chrome y Opera). Mozilla presiona por las características que agrega a su propio navegador, pueden o no convertirlo en ECMA. Tenga en cuenta que Mozilla es miembro del W3C y tiene algo que decir, pero creo que la mayoría de las características no lo harán.

línea de base No utilizar a menos que estés de codificación algo específico para Firefox, extensiones de FF, aplicaciones XUL, Rhino (Agregado Rhino gracias a @Raynos)

+1

¡O Rhino! O cualquier otra cosa que se ejecute en el intérprete de JavaScript de mozilla. – Raynos

+0

Eso es genial. De hecho, pensé que Rhino tenía una versión de JavaScript mucho más antigua, pero sí, incluso puedes elegir la versión que usarás, admite hasta 1.7 actualmente https://developer.mozilla.org/es/Rhino_Shell –

+0

Gracias por la sencillez responder. –

0

creo ECMAScript es el "estándar", como un plano, y JavaScript es el lenguaje real es basado en. Algo así como cómo w3c tiene sus estándares y luego la gente crea (o no) motores de representación basados ​​en él.

Básicamente, para responder a su pregunta, consulte ECMAScript para ver cuál es el consenso, cómo se supone que "funciona" el javascript, pero debe centrarse en javascript, porque eso es con lo que realmente estará codificando.

3

Enfoque desafiante en ES5. El problema con las características de 1.7 & 1.8 es que cambian la sintaxis del idioma para que no pueda calzarlas en otro código.

Puede emular todas las propiedades del objeto con ES5 pero no puede emular la palabra clave let. En otros navegadores, las diversas expresiones no son javascript válidas.

Debe distinguir entre agregar código nativo que es lo que está haciendo la mayoría de ES5 y cambiar la sintaxis de javascript, que es lo que 1.7 & 1.8 están haciendo.

Hay un uso para 1.7 & 1.8 que se desarrollará para la plataforma RHINO. Pero para el navegador, javascript se adhiere a la especificación.

Es cierto que los retornos de múltiples valores son una característica bastante clara. Teniendo una asignación de matrices de esa manera sería bueno

function() f { 
    return [1,2,3]; 
} 

[a,b,c] = f() 

Pero las otras características son bastante grandes cambios en la sintaxis y simplemente no se les puede empujar a través de ECMAScript que simplemente no va a tratar con él. Pequeños cambios como los que se detallan arriba podrían ingresar a ES6 pero tendrá que esperar al menos un año.

De manera realista, no espere que el aprendizaje valga la pena por uno o dos años, en todo caso. Lo más probable es que no valga la pena. Consulte las bibliotecas, como underscore.js, que pueden definir los métodos de utilidad funcional comunes para usted.

+0

¿Tiene sus expresiones regulares todavía soporte básico Unicode por UTS # 18? – tchrist

+0

Es posible alterar la sintaxis del lenguaje, mediante la introducción de un analizador/generador que compila el código al código JavaScript normal. Ver CoffeeScript - http://jashkenas.github.com/coffee-script/. Este sería un método válido (aunque requiere mucho tiempo) para ajustar el soporte de JS 1.8.5. –

+0

@tchrist No tengo ni idea. – Raynos

Cuestiones relacionadas