Pregunta ¿El modo estricto de JavaScript (ECMAScript5) ofrece importantes ventajas de rendimiento para merecer un uso generalizado?


Estoy leyendo un poco sobre el uso del modo estricto para JavaScript y parece que, en términos generales, la idea es forzar un conjunto más rígido de reglas en el codificador para garantizar que el motor JS pueda optimizar el código mejor. Casi se siente como el equivalente de JavaScript de "Option Explicit" en Visual Basic.

Si esto es básicamente el efecto neto de aplicar el modo estricto a mi código, ¿la diferencia de rendimiento sería tal que valdría la pena aplicarla por hábito en lugar de caso por caso? ¿Hay otras ventajas además de la estabilidad del código que valdría la pena considerar?

¿Cuáles son algunas de las razones clave por las que me gustaría aplicar el modo estricto a mis scripts?


12
2018-01-25 21:48


origen


Respuestas:


Bueno, el código de modo estricto ciertamente puede funcionar mejor porque elimina los problemas que dificultan la optimización, por ejemplo, desde lo más alto de mi cabeza:

  • los with declaración fue eliminada (Realmente difícil, si no imposible de optimizar).
  • No más asignaciones no declaradas y otras prohibiciones, p. (delete varName;)
  • eval no introduce declaraciones de variables / funciones en el alcance local.
  • arguments.callee fue eliminado, (difícil de optimizar (p. función en línea)
  • los arguments las propiedades con nombre de índice de objeto ya no se asignan dinámicamente a los parámetros formales nombrados.

6
2018-01-25 22:14



Creo que las razones para usarlo fueron explicadas muy bien por John Resig, http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/, y parece que Firefox lo apoyará, http://whereswalden.com/2010/09/08/new-es5-strict-mode-support-now-with-poison-pills/, por lo que puede ser útil mirar, al menos para las bibliotecas.

Pero, básicamente, es para ayudar a prevenir algunos errores de programación comunes, pero para algunas personas perder el eval puede ser motivo para no usarlo, y para mí no tener funciones anónimas sin nombre será difícil, pero cualquier cosa que pueda ayudar a reducir los errores puede valer la pena.


1
2018-01-25 21:58



No sé si el rendimiento lo valdría, pero creo que los resultados pueden variar. Supongo que depende de tu script. Pero eso no significa que sea el punto principal, sino que reduce su tiempo para mantener su código. Entonces, cualquier cosa que haga ahorrarle tiempo (y dinero) para mantener su código y hacerlo más rápido, es oro.

He sido corregido, y, por desgracia, no incluye tipeo fuerte. Los investigadores dedicaron muchos años a imponer el tipeo para detectar errores en tiempo de compilación, y ahora tenemos que confiar en que el código es bueno o verificarlo a mano o mediante pruebas unitarias. En mi humilde opinión, el tiempo que se pasa en las pruebas unitarias suele ser escaso en muchos lugares, y no se debe gastar en cosas que el compilador podría hacer.


0
2018-01-25 21:57