Struppi: DHTML auf NN 6

Beitrag lesen

Hi

eval ist in 99% der Fälle überflüssig. Daneben fehlerträchtig, fehlerverursacehnd und du findest Fehler nicht mehr, weil die Fehlermeldungen nicht mehr deutlich sind.
Wenn du sauber programmierst ist ein eval() Gold wert.
Wenn du nämlich zum Beispiel
document.getElementById(variable).style in nem eval() unterbringst hast du bei großen Scripten erstens weniger Schreibarbeit und zweitens geringe Performancegewinne.

Wieso sollte eval einen Performancegewinn bringen? Dadurch wird der Code einfach nur während der Laufzeit übersetzt, anstatt zu beginn, was mit Sicherheit performanter ist und weniger Schreibarbeit ist es mit sicherheit auch. Dazu kommt es ist übersichtlicher und wenn du einen vernünftigen Browser benutzt siehst du die Fehler beim entwickeln wesentlich leichter.
Ich verwende einen ordentlichen Browser, und ich habe in der Tat keine Probleme mit eval, im Gegenteil, es hilft manchmal doch bei verallgemeinerten Funktionen.

was sind "verallgemeinerten Funktionen"?
Das hört sich an als ob du irgendeinen Code nimmst und dann sagst da hau ich mal eval drüber, wird schon klappen. Grad bei so Sachen wie DHTML/Layer ist es wichtig allgemeingültige Funktionen zu bauen, die auch Fehler alleine abfangen anstatt zu hoffen, das es eval irgendwie tun wird.

Mir ist sicher klar, was eval tut, deswegen mag ich es ja, anstatt 300mal document.getElementById("x").style zu nehmen, das ganze per eval() auf auf "x" zu reduzieren. Wir reden von verschiedenen Anwendungen.
Aber unsere Meinungen gehen dabei auseinander, wir sollten es dabei belassen ;-)

Ja gut, aber wenn du erzählst das eval gut ist, ohne das zu belegen, könnten das Anfänger zum Anlass nehmen es unnötigerweise zu benutzen.

Und wenn ich deine obige Aussgae richitg verstehe ist bei dir:
document.getElementById("x").style
das Gleiche wie eval('x') oder was meinst du?

üblicherweise benutzt man für sowas Bibliotheken, da ja noch lange nicht alle Browser getElement.. verstehen insofern benutz ich einfach die Funktion der Bibliothek in der Form (z.b):
var obj = getLayerById(id);
if(obj) tu was mit dem layer

und da will mir bei besten Willen kein eval einleuchten.

Struppi.