JavaScript tem muitos pequenos truques para facilitar a programação. Uma delas é a função eval(), que trata uma string como uma expressão JavaScript e a executa. A seguir está sua descrição:
função Eval: primeiro interprete o código Javascript e depois execute-o: Eval (codeString)
codeString é uma string contendo instruções Javascript, compiladas usando o mecanismo Javascript após eval.
Um pequeno exemplo:
var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
alert("a resposta não avaliada é " + the_unevaled_answer + " e a resposta avaliada é " + the_evaled_answer
Se você executar este programa de avaliação, verá que em JavaScript a string "2 + 3" é realmente executada); Portanto, quando você define o valor de the_evaled_answer como eval("2 + 3"), o JavaScript entenderá e retornará a soma de 2 e 3 para the_evaled_answer.
Isso pode parecer um pouco bobo, mas na verdade pode fazer coisas muito interessantes. Por exemplo, usando eval você pode criar funções diretamente com base na entrada do usuário. Isso permite que o programa se altere com base no tempo ou na entrada do usuário e, ao aplicar inferências, você pode obter resultados surpreendentes.
Na prática, eval raramente é usado, mas talvez você já tenha visto alguém usá-lo para obter objetos difíceis de indexar. Um dos problemas com o Document Object Model (DOM) é que às vezes é difícil obter o objeto que você solicita. Por exemplo, aqui está uma função que pergunta ao usuário qual imagem transformar: Para transformar qual imagem você usaria a seguinte função:
função swapOne()
{
var the_image = prompt("trocar papagaio ou queijo","");
var the_image_object;
if (the_image == "papagaio")
{
the_image_object = window.document.parrot;
}
outro
{
the_image_object = window.document.cheese;
}
the_image_object.src = "ant.gif";
}
Junto com estas tags de imagem:
<img src="/stuff3a/parrot.gif" name="parrot" />
<img src="/stuff3a/queijo.gif" name="queijo">
Observe algumas linhas como esta:
the_image_object = window.document.parrot
Atribui um objeto de imagem a uma variável. Embora pareça um pouco estranho, está gramaticalmente correto. Mas o que acontece quando você tem 100 imagens em vez de duas? Você tem que escrever muitas declarações if-then-else, se ao menos pudesse ser assim:
função swapTwo()
{
var the_image = prompt("trocar papagaio ou queijo","");
window.document.the_image.src = "ant.gif";
}
Infelizmente, o JavaScript procurará uma imagem chamada the_image em vez de "queijo" ou "papagaio" como você esperava, então você receberá a mensagem de erro: "Não ouvi falar de um objeto chamado the_image."
Felizmente, eval pode ajudá-lo a obter o objeto desejado.
função simpleSwap()
{
var the_image = prompt("trocar papagaio ou queijo","");
var the_image_name = "window.document." + the_image;
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
Se o usuário preencher "parrot" na caixa de prompt, uma string será criada na segunda linha, window.document.parrot. Em seguida, a terceira linha contendo eval significa: "Dê-me o objeto window.document.parrot" - Isto é. o objeto de imagem que você deseja. Depois de obter o objeto de imagem, você pode definir seu atributo src como ant.gif. Isso é bastante útil e as pessoas o usam muito.