¿Qué es el soporte de navegador cruzado para las nuevas características de JavaScript 1.7? Específicamente las comprensiones de matrices y la declaración "let"
python arrays (3)
https://developer.mozilla.org/en/New_in_JavaScript_1.7
Muchas de estas nuevas características están tomadas de Python, y permitirían la creación de aplicaciones menos detalladas, lo que siempre es bueno. Cuantas veces has escrito
for (i = 0; i < arr.length; i++) {
/* ... */
}
¿Para operaciones realmente simples? ¿No sería esto más fácil?
[/* ... */ for each (i in arr)]
Creo que la brevedad es una gran cosa. Básicamente, todo se reduce a IE al final, sin embargo.
¿IE soporta estas nuevas características? ¿Qué pasa con otros navegadores?
Además de que IE no lo admite, parece que los navegadores basados en webkit (Safari, Chrome), a pesar de afirmar que tienen soporte de JS 1.7 (en realidad, la ejecución de etiquetas de script declaradas como JS 1.7), en realidad no admite ninguna de estas características que significa que, por ahora, JS 1.7 con sus muy buenas características se limita a los navegadores Geko solo.
Y debido a que Webkit aún ejecuta los scripts etiquetados como 1.7 solo, esto también significa que no podemos fallar con gracia, sino que simplemente produciremos errores de sintaxis en estos navegadores cuando usemos cualquiera de las nuevas palabras clave o sintaxis.
No, cuando dicen "JavaScript", lo dicen literalmente: el motor ECMAScript utilizado por Gecko. JScript y otros motores (AFAIK) no son compatibles con estas características.
EDITAR: Según wikipedia , JavaScript 1.7 implementa ECMAScript "Edición 3 más todas las mejoras de JavaScript 1.6, más los generadores Pythonic y las integraciones de matriz ([a * a for (a in iter)]), bloquean el alcance con let, desestructurando la asignación (var [a , b] = [1,2]) ". Así que estas características no son parte de ECMAScript.
Si bien esta pregunta es un poco antigua y está marcada como "respondida", la encontré en Google y es posible que las respuestas sean inexactas o, si no, definitivamente incompletas.
Es muy importante tener en cuenta que Javascript no es un estándar. Ken mencionó correctamente que ECMAScript es el estándar de todos los navegadores que todos los navegadores pretenden cumplir, pero lo que no aclaró es que Javascript no es ECMAScript.
Decir Javascript "implementa" ECMAScript significa que Javascript incluye ECMAScript, además de sus propias características extra propietarias que no son de navegador cruzado. El for each
ejemplo dado por nicholas es un ejemplo de una característica patentada agregada por Mozilla que no está en ningún estándar, y por lo tanto es poco probable que sea adoptada por otros navegadores.
Las funciones de Javascript 1.7 y 1.8 son útiles para el desarrollo de extensiones en XUL, pero nunca deben usarse para el desarrollo de varios navegadores, para eso están los estándares.