JavaScript tiene muchos pequeños trucos para facilitar la programación. Una de ellas es la función eval(), que trata una cadena como una expresión de JavaScript y la ejecuta. La siguiente es su descripción.
Función de evaluación: primero interprete el código Javascript y luego ejecútelo. Uso: Eval (codeString).
codeString es una cadena que contiene declaraciones de Javascript, compilada utilizando el motor de Javascript después de la evaluación.
Un pequeño ejemplo:
var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
alert("la respuesta no evaluada es " + the_unevaled_answer + " y la respuesta evaluada es " + the_evaled_answer);
Si ejecuta este programa de evaluación, verá que en JavaScript la cadena "2 + 3" en realidad se ejecuta. Entonces, cuando estableces el valor de the_evaled_answer en eval("2 + 3"), JavaScript entenderá y devolverá la suma de 2 y 3 a the_evaled_answer.
Esto puede parecer un poco tonto, pero en realidad puede hacer cosas muy interesantes. Por ejemplo, usando eval puede crear funciones directamente basadas en la entrada del usuario. Esto permite que el programa se cambie según el tiempo o la entrada del usuario, y al aplicar inferencias se pueden obtener resultados sorprendentes.
En la práctica, eval rara vez se usa, pero tal vez hayas visto a alguien usarlo para obtener objetos difíciles de indexar. Uno de los problemas con el Modelo de objetos de documento (DOM) es que a veces es complicado obtener el objeto que solicitas. Por ejemplo, aquí hay una función que le pregunta al usuario qué imagen transformar: Para transformar qué imagen usaría la siguiente función:
función swapOne()
{
var the_image = Prompt("cambiar loro o queso","");
var the_image_object;
if (the_image == "loro")
{
the_image_object = ventana.documento.parrot;
}
demás
{
the_image_object = ventana.document.cheese;
}
the_image_object.src = "ant.gif";
}
Junto con estas etiquetas de imagen:
<img src="/stuff3a/parrot.gif" nombre="loro" />
<img src="/stuff3a/queso.gif" nombre="queso">
Tenga en cuenta algunas líneas como esta:
the_image_object = window.document.parrot;
Asigna un objeto de imagen a una variable. Aunque parezca un poco extraño, es gramaticalmente correcto. Pero ¿qué pasa cuando tienes 100 imágenes en lugar de dos? Tienes que escribir muchas declaraciones if-then-else, si tan solo pudiera ser así:
función swapDos()
{
var the_image = Prompt("cambiar loro o queso","");
window.document.the_image.src = "ant.gif";
}
Desafortunadamente, JavaScript buscará una imagen llamada the_image en lugar de "queso" o "loro" como esperaba, por lo que recibirá el mensaje de error: "No he oído hablar de un objeto llamado the_image".
Afortunadamente, eval puede ayudarte a conseguir el objeto que deseas.
función simpleSwap()
{
var the_image = Prompt("cambiar loro o queso","");
var the_image_name = "ventana.documento." + the_image;
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
Si el usuario completa "parrot" en el cuadro de solicitud, se crea una cadena en la segunda línea, window.document.parrot. Luego, la tercera línea que contiene eval significa: "Dame el objeto window.document.parrot". el objeto de imagen que desee. Una vez que obtenga el objeto de imagen, puede configurar su atributo src en ant.gif. En realidad, esto es bastante útil y la gente lo usa mucho.