Le mode strictement JavaScript (ECMAScript5) offre-t-il des avantages de performance significatifs pour mériter une utilisation répandue?

Je lis un peu l'utilisation de Strict Mode pour JavaScript et il semble qu'en général, l'idée est de forcer un ensemble de règles plus rigide sur le codeur afin de s'assurer que le moteur JS peut optimiser le code. Il ressemble presque à l'équivalent JavaScript de "Option Explicit" dans Visual Basic.

Si c'est essentiellement l'effet net de l'application de Strict Mode sur mon code, la différence de performance serait-elle telle qu'elle valait la peine d'être appliquée par habitude plutôt que cas par cas? Y a-t-il d'autres avantages que la stabilité du code qui pourrait être utile?

Quelles sont les principales raisons pour lesquelles je voudrais appliquer le mode Strict à mes scripts?

Bien, le code de mode strict peut certainement fonctionner mieux car il supprime les problèmes qui rendent l'optimisation plus difficile, par exemple, du haut de la tête:

  • La déclaration with été supprimée (Vraiment difficile, si impossible, d'optimiser).
  • Plus d'affectations non déclarées et d'autres interdictions, par exemple ( delete varName; )
  • eval n'introduit pas les déclarations variable / fonction dans la portée locale.
  • arguments.callee été supprimé, (difficile à optimiser (p . Ex . Inlining de la fonction ))
  • L'index des objets d' arguments nommé les propriétés n'est plus mappé dynamiquement aux paramètres formels nommés.

Je pense que les raisons de l'utiliser ont été bien expliquées par John Resig, http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ , et il semble que Firefox le soutiendra, http : //whereswalden.com/2010/09/08/new-es5-strict-mode-support-now-with-poison-pills/ , il peut donc être utile de regarder, au moins pour les bibliothèques.

Mais, fondamentalement, il s'agit d'aider à prévenir certaines erreurs de programmation communes, mais pour certaines personnes qui perdent l' eval peut être une raison de ne pas l'utiliser, et pour moi, ne pas avoir de fonctions anonymes anonymes sera difficile, mais tout ce qui peut aider à réduire les erreurs peut être Valoir la peine.

Je ne sais pas si la performance serait digne, mais je suppose que vos résultats peuvent varier. Je suppose que cela dépend de votre script. Mais cela ne signifie pas être le point principal, mais en réduisant votre temps à maintenir votre code. Donc, tout ce qui vous permet de gagner du temps (et de l'argent) en maintenant votre code, et le rend plus rapide, est doré.

J'ai été corrigé, et, malheureusement, cela ne comprend pas la typographie forte. Beaucoup d'années ont été dépensées par des chercheurs pour imposer la saisie pour détecter des erreurs au moment de la compilation, et maintenant nous devons faire confiance à ce que le code soit bon ou vérifié à la main ou à l'unité de test. IMHO, le temps passé dans les tests unitaires est généralement rare dans de nombreux endroits, et il ne devrait pas être dépensé sur les choses qui pourraient être faites par le compilateur.