2009-09-14 17 views
34

ECMAScript 5 está en su borrador final mientras escribo esto; Se debe incluir un modo estricto que evitará que se asigne al objeto global, utilizando eval y otras restricciones. (John Resig's Article es una buena introducción.)¿Qué entornos (javascript) admiten el modo estricto ECMAscript 5? (también conocido como "use strict")

Este mágico modo de ahorro de cordura se desencadena al incluir la cadena "use strict" en la parte superior de su archivo (o función). Sin embargo, en entornos más antiguos, "use strict" es un no-op. Si agrega "use strict" y no lo prueba en un entorno estricto, podría estar dejando una bomba de tiempo con un código no muy estricto que se romperá cuando realmente llegue a un entorno estricto.

¿Qué entornos realmente respetan "uso estricto"?

+2

Entonces, encontré el error de seguimiento para la implementación de Mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=482298 (Eso es para SpiderMonkey, creo). –

+0

¡Es bueno saberlo! Gracias. – kangax

+0

Aquí está el error de seguimiento para Rhino ES5: https://bugzilla.mozilla.org/show_bug.cgi?id=489326 y el error "Modo estricto" para Rhino: https://bugzilla.mozilla.org/show_bug.cgi? id = 517860 –

Respuesta

26

actualización:

Ver mi compatibility table.

respuesta original:

Ninguno partir de ahora.

Raphael Speyer era working on Mozilla implementation for Rhino during this summer, y afaik, su implementación está casi terminada.

Sé (según la información de ES-discuss list) que Microsoft planea incluir algunas de las características de ES5 en las próximas versiones de IE y que podrían estar trabajando en la implementación de modo estricto (como probablemente sabrá, IE8 ya incluye algunas de las características de ES5, como Object.defineProperty).

También hay Google's Caja project que de alguna manera emula el comportamiento del modo estricto en algunas de sus variaciones (Valija, Cajita, etc.).

Crockford también agregó recientemente esta opción al JSLint, pero no estoy seguro de si realmente desencadena alguna validación adicional (según las reglas estrictas de ES5).

+0

Peor aún, Speyer se quedó sin tiempo y no implementó el modo estricto, por lo que aunque Rhino admitirá la mayoría de las otras características de ES5, no admite el modo estricto. :-( –

+0

Ya no es actual.: O – Kzqai

+1

@Tchalvak actualizado – kangax

12

Ahora que se ha lanzado, Firefox 4 es el ganador del "primer navegador compatible con ES5 Strict Mode". Ahora puede comenzar a usarlo, siempre y cuando se prueba en Firefox 4.


Safari 5.1+ y Chrome 13+ también soporta el modo estricto.


El primero se encuentra en: Besen. Implementado en Delphi. Creo que es independiente, pero no estoy seguro. Pero sí es compatible con el modo estricto.

Encontrado por this compatibility table.


Jurassic afirma que es compatible con ES5 Strict Mode.

+2

Es curioso que la tabla de compatibilidad la mantiene el otro cartel de arriba. – Tower

+0

Sí; @kangax es increíble para hacer un seguimiento de esto. –

9

ECMAScript 5 modo estricto requiere que estas versiones de los principales navegadores (o superior):

Chrome 13.0
Safari 5.1
Firefox 4.0
Internet Explorer 10.0
Opera 11.6

No, IE9 no tiene un soporte estricto, es nuevo en la versión 10 o posterior.

1

Opera 11.60 ya es totalmente compatible con ECMAScript 5.1 y su estricta variación de modo. Ver la tabla de compatibilidad @kangax.

+0

Solo opera 12, que aún no se ha lanzado, admite el modo estricto. –

+0

No, Opera 11.60 admite el modo estricto -> http://dev.opera.com/articles/view/introducing-ecmascript-5-1/ – marcio

+0

Huh. La tabla de @angax no cubre la ópera 11.6. Raro. –

Cuestiones relacionadas