JavaScript propose de nombreuses petites astuces pour faciliter la programmation. L'une d'elles est la fonction eval(), qui traite une chaîne comme une expression JavaScript et l'exécute. Voici sa description.
Fonction Eval : interprétez d'abord le code Javascript, puis exécutez-le. Utilisation : Eval(codeString)
codeString est une chaîne contenant des instructions Javascript, compilées à l'aide du moteur Javascript après évaluation.
Un petit exemple :
var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
alert("la réponse non évaluée est " + the_unevaled_answer + " et la réponse évaluée est " + the_evaled_answer);
Si vous exécutez ce programme d'évaluation, vous verrez qu'en JavaScript la chaîne "2 + 3" est réellement exécutée. Ainsi, lorsque vous définissez la valeur de the_evaled_answer sur eval("2 + 3"), JavaScript comprendra et renverra la somme de 2 et 3 à the_evaled_answer.
Cela peut paraître un peu idiot, mais cela peut en réalité faire des choses très intéressantes. Par exemple, en utilisant eval, vous pouvez créer des fonctions directement basées sur les entrées de l'utilisateur. Cela permet au programme de se modifier en fonction du temps ou des entrées de l'utilisateur, et en appliquant des inférences, vous pouvez obtenir des résultats étonnants.
En pratique, eval est rarement utilisé, mais peut-être avez-vous vu quelqu'un l'utiliser pour obtenir des objets difficiles à indexer. L'un des problèmes du modèle objet de document (DOM) est qu'il est parfois difficile d'obtenir l'objet que vous demandez. Par exemple, voici une fonction qui demande à l'utilisateur quelle image transformer : Pour transformer quelle image vous utiliseriez la fonction suivante :
fonction swapOne()
{
var the_image = prompt("changer de perroquet ou de fromage","");
var l'objet_image_;
if (l'image == "perroquet")
{
the_image_object = window.document.parrot;
}
autre
{
the_image_object = window.document.cheese;
}
the_image_object.src = "ant.gif";
}
Avec ces balises d'image :
<img src="/stuff3a/parrot.gif" name="parrot" />
<img src="/stuff3a/cheese.gif" name="fromage">
Veuillez noter quelques lignes comme celle-ci :
the_image_object = window.document.parrot;
Il attribue un objet image à une variable. Même si cela semble un peu étrange, c’est grammaticalement correct. Mais que se passe-t-il lorsque vous avez 100 images au lieu de deux ? Vous devez écrire beaucoup d'instructions if-then-else, si seulement cela pouvait ressembler à ceci :
fonction swapDeux()
{
var the_image = prompt("changer de perroquet ou de fromage","");
window.document.the_image.src = "ant.gif";
}
Malheureusement, JavaScript recherchera une image nommée the_image au lieu de « fromage » ou « perroquet » comme vous vous y attendiez, vous obtenez donc le message d'erreur : « Je n'ai pas entendu parler d'un objet nommé the_image. »
Heureusement, eval peut vous aider à obtenir l'objet souhaité.
fonction simpleSwap()
{
var the_image = prompt("changer de perroquet ou de fromage","");
var the_image_name = "window.document." + the_image;
var l'objet_image_objet = eval(le_nom_image);
the_image_object.src = "ant.gif";
}
Si l'utilisateur remplit "parrot" dans la boîte de dialogue, une chaîne est créée dans la deuxième ligne, window.document.parrot. Ensuite, la troisième ligne contenant eval signifie : "Donnez-moi l'objet window.document.parrot" - C'est-à-dire. l'objet image souhaité. Une fois que vous obtenez l'objet image, vous pouvez définir son attribut src sur ant.gif. C'est en fait très utile et les gens l'utilisent beaucoup.