2009-09-14 8 views
34

ECMAScript 5 est dans son projet final que j'écris ceci; Il est dû inclure un mode strict qui vous empêchera d'assigner à l'objet global, en utilisant eval, et d'autres restrictions. (John Resig's Article est une bonne introduction.)Quels environnements (javascript) prennent en charge le mode strict ECMAscript 5? (aka "use strict")

Ce mode d'économie d'énergie magique est déclenché en incluant la chaîne "use strict" en haut de votre fichier (ou fonction). Cependant, dans les environnements plus anciens, "use strict" est un non-op. Si vous ajoutez "use strict" et que vous ne le testez pas dans un environnement strict, vous pourriez laisser une bombe à retardement de code pas vraiment strict qui se casse quand il frappe un environnement strict.

Quels environnements respectent réellement "use strict"?

+2

Donc, j'ai trouvé le bug de suivi pour l'implémentation de Mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=482298 (C'est pour SpiderMonkey, je pense.) –

+0

Bon à savoir! Merci. – kangax

+0

Voici le bug de suivi pour l'ES5 Rhino: https://bugzilla.mozilla.org/show_bug.cgi?id=489326 et le bug "Mode Strict" pour Rhino: https://bugzilla.mozilla.org/show_bug.cgi? id = 517860 –

Répondre

26

Mise à jour:

Voir mon compatibility table.

réponse originale:

Aucun dès maintenant. Raphael Speyer a été working on Mozilla implementation for Rhino during this summer, et afaik, leur mise en œuvre est presque terminée. Je sais (d'après les informations de la liste ES-discuss) que Microsoft prévoit d'inclure certaines fonctionnalités ES5 dans les versions à venir d'IE et qu'il pourrait très bien fonctionner en mode strict (comme vous le savez probablement, IE8 inclut déjà certaines fonctionnalités ES5, comme Object.defineProperty).

Il y a aussi Google's Caja project qui émule quelque peu le comportement du mode strict dans certaines de ses variations (Valija, Cajita, etc.). Crockford a récemment ajouté cette option à JSLint, mais je ne suis pas sûr que cela déclenche réellement des validations supplémentaires (conformément aux règles strictes ES5).

+0

Encore pire, Speyer a manqué de temps et n'a pas implémenté le mode strict, donc même si Rhino supporte la plupart des autres fonctionnalités ES5, il ne supporte pas le mode strict. :-( –

+0

Plus actuel:: – Kzqai

+1

@Tchalvak mis à jour – kangax

12

Maintenant qu'il est réellement publié, Firefox 4 est le gagnant du "premier navigateur à prendre en charge le mode strict ES5". Maintenant, vous pouvez commencer à l'utiliser, aussi longtemps que vous tester dans Firefox 4.


Safari 5.1+ et Chrome 13+ soutenir également le mode strict. Le premier est dans: Besen. Implémenté dans Delphi. Je pense que c'est autonome, mais je ne suis pas sûr. Mais il supporte le mode strict.

Trouvé via this compatibility table.


Jurassic revendique le mode strict ES5.

+2

Drôle que la table de compatibilité est maintenue par l'autre affiche ci-dessus – Tower

+0

Oui, @kangax est génial pour garder une trace de ce genre de choses –

9

ECMAScript 5 mode strict exige que ces versions pour les principaux navigateurs (ou plus):

Chrome 13.0
Safari 5.1
Firefox 4.0
Internet Explorer 10.0
Opera 11.6

Non, IE9 n'a pas de support strict, c'est nouveau pour la version 10 ou ultérieure.

1

Opera 11,60 soutient déjà pleinement ECMAScript 5.1 et il est une variation du mode strict. Voir la table de compatibilité @kangax.

+0

seulement opéra 12, non encore publié, prend en charge le mode strict –

+0

Nope, Opera prend en charge le mode strict 11,60 -.> http://dev.opera.com/articles/view/introducing-ecmascript-5-1/ – marcio

+0

Huh. La table de @ kangax ne couvre pas l'opéra 11.6 Bizarre –

Questions connexes