JavaScript/eval

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die globale Funktion eval() interpretiert ein zu übergebendes Argument als JavaScript.

  • JavaScript 1.1
  • Chrome
  • IE
  • Firefox
  • Opera
  • Safari

Syntax

eval(string)

  • string: eine Zeichenkette, die Argumente, Anweisungen, etc enthält

Erzeugt eine Fehlermeldung, wenn der übergebene Ausdruck nicht interpretierbar ist.

Vorüberlegungen zur Sicherheit[Bearbeiten]

Achtung!

eval is Evil: The eval function is the most misused feature of JavaScript. Avoid it”

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.

Beachten Sie: Im strict mode können in 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[Bearbeiten]

arithmetische Berechnungen[Bearbeiten]

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.

Beispiel
  <form action="">
    <input type="name" size="30" name="Eingabe">
    <input type="button" value="Berechnen" onclick="alert(eval(this.form.Eingabe.value))">
  </form>
Das Beispiel enthält ein Formular mit einem Eingabefeld und einem Button. In dem Eingabefeld kann der Anwender eine Rechenoperation eingeben, zum Beispiel 1+2+3+4+5+6+7+8+9 oder 12.78*5.13. Beim Klick auf den Button wird der Wert aus dem Formular mit eval() berechnet und in einem Meldungsfenster ausgegeben.
Empfehlung: Vermeiden Sie eval(). Arithmetische Berechnungen (auch kompliziertere mit eingeklammerten Termen) können direkt im JavaScript ausgeführt werden und benötigen kein eval().

Parsen von JSON[Bearbeiten]

Empfehlung: Verwenden Sie zum Deserialisieren von JSON-Text die JSON.parse()-Funktion Sie ist sicherer und wird schneller ausgeführt als die eval-Funktion.

Weblinks[Bearbeiten]