Hallo Struppi und scherzkeks,
Hallo,
Wichtiger als die Tatsache, dass eval langsamer ist, ist vermutlich schon, dass solche Konstruktionen Programme schwerer zu verstehen und unverständlicher machen.
Dann verstehe ich aber nicht den Aufruhr um eval(). Wenn sich jemand dabei nicht auskennt - na, dann wird ers halt nicht nehmen. Wenn doch, dann ist es ja okey, da i.d.R. nur der, der die Scripts schrieb sich in ihnen "zurechtfinden" muss.
Geschwindigkeit spielt bei Javascript kaum eine Rolle.
Das denke ich nicht. JavaScript ist von Haus aus extrem langsam, da sollte man doch zusaetzliche Bremsen verhindern, wo nur moeglich.
Es ist eben einfacher, direkt zu sehen, was ein Stück Code tut, als sich erst überlegen zu müssen, was da für Code zusammengebaut wird.
Ich hatte mal auf einer Seite alle paar Millisekunden je 7 mal die Fenstergroesse abfragen muessen. Da ich keine Lust hatte, immer wieder kompliziert machende if() abfragen zu benutzen (da IE und NS da ja unterschiedliche Eigenschaften benutzen), speicherte ich beim Laden des Dokuments die erforderliche Methode in einer Variable und habe bei jedem Abfragen die Variable und eval() benutzt.
Das ist von der Uebersicht besser und Geschwindigkleitseinbussen waren auch auf langsamen Rechnern nicht bemerkbar.
Schlechter Verständlichkeit bedeutet dann natürlich mehr Fehler.
ok, das stimmt. (mehr moehliche Fehler und schlechteres Auffinden und Beheben)
Im Falle von Javascript sind das natürlich keine Sicherheitslücken.
Hinzu kommt, dass eval eigentlich keine zusätzliche Ausdrucksfähigkeit bringt. Wenn man also irgend etwas berechnen möchte, kann man das mit Hilfe von eval auch nicht geschickter implementieren. Eval hat eigentlich nur dann Vorteile, wenn man wirklich Code ausführen möchte, der nicht aus dem Programm sondern aus einer anderen Quelle stammt (z.B. einem Eingabefeld), also dann, wenn man die Alternative darin bestände, einen Javascript-Interpreter zu schreiben.
Jau!
Ich erinner mich an eine Diskussion hier letztes Jahr, wo ich gleich losgeblökt habe "eval ist evil", aber der Frager mit eval eine dynamischen Regulären Ausdrucks entwickeln wollte und hat
Wäre interessant, reguläre Ausdrücke kann man ja eigentlich auch ohne eval zusammenbauen.Grüße
Danke, ebenfalls und noch einen schoenen Montagnachmittag,
scherzkeks
Daniel