> Faqs > Cómo funciona la función eval() de Javascript

Cómo funciona la función eval() de Javascript

No entiendo muy bien para que sirve la función eval(), ni su funcionamiento.

¿Me lo podrían explicar de una forma sencilla?

Respuestas

Esta función es una clásica en el lenguaje, que se suele usar poco pero que encierra mucha potencia.

Es un recurso importante, para algunas algunas aplicaciones de Javascript donde necesitas generar código programaticamente y luego ejecutarlo con el intérprete de javascript. Como digo no es algo muy habitual pero si necesitas construir y ejecutar código dinámicamente es la única solución que tienes.

También, dicho sea de paso, su potencia hace que a veces se use también en ataques, siendo potencialmente usada para ofuscar código potencialmente malicioso, por lo que no se considera una función muy segura. Además y consecuencia de ello, si no tenemos especial cuidado al usarla, es fácil que nosotros mismos introduzcamos los agujeros de seguridad a las aplicaciones.

Su utilización es muy simple, pero puede que resulte un poco más complejo entender en qué casos utilizarla porque a veces resulta un poco sutil su aplicación.

Con los conocimientos actuales no podemos hacer un ejemplo muy complicado, pero por lo menos podemos ver en marcha la función. Vamos a utilizarla en una sentencia un poco rara y bastante inservible, pero si la conseguimos entender conseguiremos entender también la función eval.

 var miTexto = "3 + 5"   
 eval("document.write(" + miTexto +")") 

Primero creamos una variable con un texto, en la siguiente línea utilizamos la función eval y como parámetro le pasamos una instrucción javascript para escribir en pantalla. Si concatenamos los strings que hay dentro de los paréntesis de la función eval nos queda esto.

 document.write(3 + 5)  

La función eval ejecuta la instrucción que se le pasa por parámetro, así que ejecutará esta sentencia, lo que dará como resultado que se escriba un 8 en la página web. Primero se resuelve la suma que hay entre paréntesis, con lo que obtenemos el 8 y luego se ejecuta la instrucción de escribir en pantalla.

Miguel Angel
3310 147 216 17

La función eval() recibe una cadena de texto. Lo que hace es simplemente ejecutar esa cadena como si fuera código Javascript.

eval('console.log("hola")');

Ese código simplemente ejecutaría console.log("hola") y por lo tanto aparecería "hola" en la consola.

Borja
325 6 27 17