Firefox 4 admitirá ECMAScript 5 en modo estricto
ECMAScript 5 es una especificación de lenguaje publicada por ECMA Internacional, se basó en el lenguaje JavaScript propuesto en su momento por Netscape Communications Corporation para su estandarización, trabajo que se realizó sobre la especificación ECMA-262.
Los desarrolladores de la comunidad Mozilla han hecho importantes mejoras en el motor de JavaScript para Firefox 4. Habiendo dedicado gran parte de su esfuerzo en mejorar el rendimiento, pero también han trabajado sobre las nuevas funciones. Centrando especialmente su atención en ECMAScript 5, la última actualización de la norma subyacente JavaScript.
El modo estricto es una manera de optar por una variante restringida de JavaScript. Además de ser un subconjunto, cuenta con una semántica diferente. Los navegadores que no admitan el modo estricto por lo tanto ejecutarán este código de forma diferente a los navegadores que sí lo admiten.
El código en modo estricto y el código en modo no estricto pueden coexistir, por lo que los scripts pueden ser modificados a código estricto en forma incremental. El modo estricto abre un camino para el futuro de las ediciones de ECMAScript, donde el nuevo código con un <script type=”…”> particular, probablemente pueda ejecutarse en modo estricto de forma automática.
¿Qué hace el modo estricto? En primer lugar, elimina las alarmas de error de JavaScript que no causaron errores y las cambia para que se produzca un error. En segundo lugar, arregla errores que pueden ser difíciles para los motores de JavaScript y así mejorar su desempeño: el código en modo estricto puede a veces estar hecho para ejecutarse más rápido que un código idéntico que no se encuentre escrito en modo estricto. Firefox 4 en general no ha optimizado el modo estricto, sin embargo, las versiones posteriores lo tendrán. Tercero, se prohíbe que se defina una posible sintaxis en futuras versiones de ECMAScript.
Ahora los dejo con algo mas sobre el modo para que conozcan más sobre este.
Invocando el modo estrictoo
El modo estricto aplica para un script completo o para funciones individuales. Esto no aplica para bloques de sentencias encerradas entre llaves {}; Tratar de aplicarlos a dicho contexto no haría nada. El código eval, manejador de atributos de eventos, las cadenas pasan a setTimeout, y son similares las secuencias de comandos completa, y la innovación en modo estricto en ellos, funciona como se espera.
Modo estricto para los scripts
Para invocar el modo estricto en un script completo, ponga exactamente la sentencia “use strict”; (o ‘use strict’;) antes de cualquier otra sentencia.
// Whole-script strict mode syntax
“use strict”;
var v = “Hi! I’m a strict mode script!”;
Esta sintáxis tiene una trampa en la que ha caído un sitio importante: no es posible concatenar a ciegas scripts no conflictivos. Considere concatenar un script de modo estricto con un script de modo no estricto: la concatenacion completa parecería estricta. Al contrario también se cumple: un script no estricto con uno estricto parecería no estricto. La concatenación de un script en modo estricto con otro esta bien, y la concatenación de scripts en modo no estricto está bien. Solamente el cruce de flujos por concatenación de scripts en modo estricto y no estricto presenta problemas.
Modo estricto para funciones
Del mismo modo, para invocar el modo estricto en una función, use exactamen la sentencia “use strict”; (o ‘use strict’;) en el cuerpo de la función antes de las otras sentencias
function strict()
{
// Function-level strict mode syntax
‘use strict’;
function nested() { return “And so am I!”; }
return “Hi! I’m a strict mode function! ” + nested();
}
function notStrict() { return “I’m not strict.”; }
Cambios en el modo estricto
El modo estricto cambia ambas cosas, sintaxis y ambiente de ejecución. Los cambios generalmente caen dentro de estas categorías: cambios en la conversión de errores en errores (como errores de sintaxis o en tiempos de ejecución), cambios en la simplificación sobre cómo una variable en particular para el uso de un nombre se calcula, cambios en la evaluación de la simplificación y argumentos, cambios que hacen más fácil el escribir un JavaScript “seguro”, y cambios que anticipan una futura evolución de ECMAScript.
Conviertiendo fallas en errores
El modo estricto cambia fallas previamente aceptadas a errores. JavaScript fue diseñado para ser fácil para los desarrolladores novatos, y algunas veces ofrece operaciones que pueden cambiar algunas fallas aceptadas previamente en los errores. A veces también muestra las operaciones que deben ser los errores de semántica de no-error. En algunas ocasiones esto soluciona el problema inmediato, pero en otras crea problemas peores en el futuro. El modo estricto trata estos errores para que sean ubicados y corregidos rápidamente.
En primer lugar, el modo estricto no permite crear accidentalmente variables globales. En JavaScript es normal escribir mal una variable en una misión, crea una nueva propiedad en el objeto global y continúa el “trabajo” (aunque el fracaso futuro es posible: es probable, en la actual JavaScript). Un ejemplo de asignaciones que accidentalmente crea variables globales en lugar de lanzar en modo estricto podría ser el siguiente:
“use strict”;
mistypedVaraible = 17; // lanza un ReferenceError
Fuente: Mozilla Hacks.
0





