Razones por las que nunca deberías usar eval() en JavaScript

¡La función eval() existe desde hace mucho tiempo en JavaScript! Probablemente ya no la veas con frecuencia porque existe un consenso generalizado sobre su uso nocivo. Echemos un vistazo rápido a esta función y a algunos de los peligros asociados con su uso.
La palabra clave eval
es una abreviatura de “evaluar”. La función básicamente toma una cadena con código JavaScript y la evalúa por usted.
eval('2 + 3 + 1');// 6
Puedes evaluar una expresión simple… ¡O un montón de código JavaScript!
var foo = 2;eval('var bar = 3;var baz = 1;function addStuff() { return foo + bar + baz;}addStuff();');// 6
Razones para evitar su uso eval()
A menos que estés trabajando con JavaScript de alto nivel (ver más abajo), los riesgos suelen ser mayores que los beneficios de usar eval()
. Estas son algunas de las razones para evitar su uso:
- Código malicioso:La invocación
eval
puede hacer que el equipo se bloquee. Por ejemplo, si utilizaeval
el servidor y un usuario malintencionado decide utilizar un bucle infinito como nombre de usuario. - Terriblemente lento:El lenguaje JavaScript está diseñado para utilizar toda la gama de tipos de JavaScript (números, funciones, objetos, etc.)… ¡No solo cadenas! Su uso
eval
es mucho más lento que el del código JavaScript normal.
Teniendo en cuenta que eval()
todavía es parte del estándar ECMAScript… ¿Existen usos apropiados para ello?
Usos legítimos para eval()
Existe un pequeño subconjunto del desarrollo de JavaScript que requiere el uso de eval
. Entre ellos se incluyen: el desarrollo de bibliotecas de plantillas, intérpretes, líneas de comandos y sistemas de módulos. La mayoría de estos tipos de desarrollo de software son metaprogramación y herramientas de compilación.
Si no estás seguro de si debes usar eval
, prueba a hacer una búsqueda rápida en StackOverflow. Casi siempre hay un enfoque mejor.
Deja una respuesta