JavaScript/eval
Die globale Funktion eval() interpretiert ein zu übergebendes Argument als JavaScript.
Syntax
eval(string)
-
string
: eine Zeichenkette, die Argumente, Anweisungen, etc enthält
Erzeugt eine Fehlermeldung, wenn der übergebene Ausdruck nicht interpretierbar ist.
Inhaltsverzeichnis
Vorüberlegungen zur Sicherheit
Achtung!
Douglas Crockford in JavaScript: The Good Parts
(Eval ist böse. Es ist das am häufigsten missbräuchlich genutzte Javascript-Feature. Vermeiden Sie es!)Mit eval()
können Sie JavaScript-Code interpretieren und ausführen. Früher wurde dies zum Umwandeln von Zahlen und Zeichenketten, wie z. B. hier für arithmetische Berechnungen verwendet. Dies birgt aber immer das Risiko, dass unerwünschter Code durch Benutzereingaben in ihr Script gelangt und dann ausgeführt wird.
Darüberhinaus ist das Verarbeiten mit eval()
, dass einen eigenen Compiler verwendet, immer langsamer als das Verwenden nativer Methoden.
eval()
deklarierte Variablen nicht außerhalb dieser Funktion verwendet werden. Deshalb ist die Verwendung von eval()
heute nur noch in seltenen Fällen üblich.Anwendungsbeispiele
arithmetische Berechnungen
Wenn das übergebene Argument als Rechenoperation interpretierbar ist, wird die Operation berechnet und das Ergebnis zurückgegeben. Dabei sind auch komplexe Rechenausdrücke mit Klammerung möglich. Diese Funktionalität ist sehr praktisch, um als Zeichenketten notierte Rechenausdrücke mit einem einzigen Befehl errechnen zu lassen.
<form action="">
<input type="name" size="30" name="Eingabe">
<input type="button" value="Berechnen" onclick="alert(eval(this.form.Eingabe.value))">
</form>
eval()
. Arithmetische Berechnungen (auch kompliziertere mit eingeklammerten Termen) können direkt im JavaScript ausgeführt werden und benötigen kein eval()
.Hauptartikel: JavaScript/Tutorials/Taschenrechner
Parsen von JSON
eval
-Funktion.Weblinks
- molily: Die Grundlagen von JavaScript Deutsche Übersetzung des Artikels JavaScript. The core. von Dmitry A. Soshnikov
1+2+3+4+5+6+7+8+9
oder12.78*5.13
. Beim Klick auf den Button wird der Wert aus dem Formular miteval()
berechnet und in einem Meldungsfenster ausgegeben.