JavaScript verfügt über viele kleine Tricks, die das Programmieren einfacher machen. Eine davon ist die Funktion eval(), die einen String als JavaScript-Ausdruck behandelt und ausführt. Das Folgende ist die Beschreibung der
Eval-Funktion: Interpretieren Sie zuerst den Javascript-Code und führen Sie ihn dann aus.
codeString ist eine Zeichenfolge mit Javascript-Anweisungen, die nach der Auswertung mit der Javascript-Engine kompiliert wird.
Ein kleines Beispiel:
var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
Alert("Die nicht ausgewertete Antwort ist " + the_unevaled_answer + " und die ausgewertete Antwort ist " + the_evaled_answer);
Wenn Sie dieses Auswertungsprogramm ausführen, werden Sie sehen, dass in JavaScript die Zeichenfolge „2 + 3“ tatsächlich ausgeführt wird. Wenn Sie also den Wert von the_evaled_answer auf eval("2 + 3") setzen, erkennt JavaScript die Summe von 2 und 3 und gibt sie an the_evaled_answer zurück.
Das mag etwas albern erscheinen, aber es kann tatsächlich sehr interessante Dinge bewirken. Mit eval können Sie beispielsweise Funktionen direkt basierend auf Benutzereingaben erstellen. Dadurch kann sich das Programm je nach Zeit oder Benutzereingaben selbst ändern, und durch die Anwendung von Schlussfolgerungen können Sie erstaunliche Ergebnisse erzielen.
In der Praxis wird eval selten verwendet, aber vielleicht haben Sie schon einmal gesehen, wie jemand es verwendet, um schwer zu indizierende Objekte abzurufen. Eines der Probleme mit dem Document Object Model (DOM) besteht darin, dass es manchmal mühsam ist, das gewünschte Objekt zu erhalten. Hier ist beispielsweise eine Funktion, die den Benutzer fragt, welches Bild transformiert werden soll: Um welches Bild zu transformieren, würden Sie die folgende Funktion verwenden:
Funktion swapOne()
{
var the_image = prompt("Papagei oder Käse wechseln",");
var the_image_object;
if (the_image == "Papagei")
{
the_image_object = window.document.parrot;
}
anders
{
the_image_object = window.document.cheese;
}
the_image_object.src = "ant.gif";
}
Zusammen mit diesen Bild-Tags:
<img src="/stuff3a/parrot.gif" name="parrot" />
<img src="/stuff3a/cheese.gif" name="cheese">
Bitte beachten Sie einige Zeilen wie diese:
the_image_object = window.document.parrot;
Es weist einer Variablen ein Bildobjekt zu. Obwohl es etwas seltsam aussieht, ist es grammatikalisch korrekt. Aber was passiert, wenn Sie 100 statt zwei Bilder haben? Man muss viele Wenn-Dann-Sonst-Anweisungen schreiben, wenn es nur so sein könnte:
Funktion swapTwo()
{
var the_image = prompt("Papagei oder Käse wechseln",");
window.document.the_image.src = "ant.gif";
}
Leider sucht JavaScript wie erwartet nach einem Bild mit dem Namen the_image und nicht nach „cheese“ oder „parrot“, sodass Sie die Fehlermeldung erhalten: „Von einem Objekt mit dem Namen the_image habe ich noch nichts gehört.“
Glücklicherweise kann eval Ihnen dabei helfen, das gewünschte Objekt zu erhalten.
Funktion simpleSwap()
{
var the_image = prompt("Papagei oder Käse wechseln",");
var the_image_name = „window.document.“ + the_image;
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
Wenn der Benutzer „parrot“ in das Eingabeaufforderungsfeld eingibt, wird in der zweiten Zeile eine Zeichenfolge erstellt, window.document.parrot. Dann bedeutet die dritte Zeile mit „eval“: „Geben Sie mir das Objekt window.document.parrot“. das gewünschte Bildobjekt. Sobald Sie das Bildobjekt erhalten haben, können Sie dessen src-Attribut auf ant.gif setzen. Dies ist tatsächlich sehr nützlich und wird häufig verwendet.