A small example:
var the_unevaled_answer = "2 3" ;
var the_evaled_answer = eval("2 3");
alert("the un-evaled answer is " the_unevaled_answer " and the evaled answer is " the_evaled_answer);
If you Run this eval program and you will see that the string "2 3" is actually executed in JavaScript.
So when you set the value of the_evaled_answer to eval("2 3"), JavaScript will understand and return the sum of 2 and 3 to the_evaled_answer.
This may seem a bit silly, but it can actually do very interesting things. For example, using eval you can create functions directly based on user input.
This allows the program to change itself based on time or user input. By drawing inferences from one example, you can get amazing results.
In practice, eval is rarely used, but maybe you have seen someone using eval to get hard-to-index objects.
One of the problems with the Document Object Model (DOM) is that sometimes it is a pain to get the object you asked for.
For example, here is a function asking the user which image to transform: To transform which image you can use the following function:
function swapOne()
{
var the_image = prompt("change parrot or cheese","");
var the_image_object;
if (the_image == "parrot")
{
the_image_object = window.document.parrot;
}
else
{
the_image_object = window.document.cheese;
}
the_image_object.src = "ant.gif";
}
along with these image tags:
[img src= "/stuff3a/parrot.gif" name="parrot"]
[img src="/stuff3a/cheese.gif" name="cheese"]
Please pay attention to a few lines like this:
the_image_object = window.document.parrot;
It assigns an image object to a variable. Although it looks a bit strange, it is grammatically correct.
But what if you have 100 images instead of two? You have to write a lot of if-then-else statements, if only it could be like this:
function swapTwo()
{
var the_image = prompt("change parrot or cheese"," ");
window.document.the_image.src = "ant.gif";
}
Unfortunately, JavaScript will look for the_image instead of "cheese" or "parrot" as you expected "image,
and you get the error message: "Haven't heard of an object named the_image".
Fortunately, eval can help you get the object you want.
function simpleSwap()
{
var the_image = prompt("change parrot or cheese","");
var the_image_name = "window.document." the_image;
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
If the user fills in "parrot" in the prompt box, a string, window, is created in the second line. document.parrot. Then the third
line containing eval means: "Give me the object window.document.parrot" - that is, the image object you want. Once you get the image object, you can set
its src attribute to ant.gif. A little scared? No need. It's actually quite useful and people use it a lot.
We often come to the Eval function in Javascript.
Some people think this function is strange. It can turn some strings into very powerful functions.
When we need to convert ordinary strings into specific objects This function is used when String parameters. If the string is an expression, eval evaluates the expression; if the argument represents one or more JavaScript statements, eval executes those statements. The eval function can be used to convert a date from a format (always a string) to a numeric expression or number.
==============================
Eval function
Function: Explain the Javascript code first, and then Execute it
Usage: Eval(codeString)
codeString is a string containing Javascript statements, which is compiled using the Javascript engine after eval.
Notes:
Example: eval(id "_icon.src="/imgs/collapse_up.gif'");
id is the previously set parameter, and the string in double quotes is
references that need to be compiled:
{
if (top.topframeset.rows == "31,*")
{
top.topframeset.rows = "86,*";
eval(id "_icon.src="/imgs/collapse_up.gif'");
eval(id "_icon.alt='Collapse The Head'");
head.style.display = "block"
}
else
{
top.topframeset.rows = "31,*";
eval(id "_icon.src="/imgs/collapse_down.gif'");
eval(id "_icon.alt='Expand The Head'");
head.style.display = "none"
}
}