Cyx23: Was ist an diesem Script falsch?

Beitrag lesen

Hallo,

weil dabei Code ausgeführt wird, der augenscheinlich nicht der vollen Kontrolle des Programmierers unterliegt, weil er sonst nicht als String ausgeführt wurde.

da kann ich mir allerdings schwerlich ein Risiko vorstellen.

Oder anders gefragt, wenn z.B. die Alternative der zusätzliche Aufruf einer neuen Funktion wäre, was wäre daran "besser"?

Die neue Funktion. Ich unterstelle aber, dass es nicht die einzige Alternative ist: JavaScript beherrscht Referenzen, und auf die meisten Objekte kann verschiedenartig zugegriffen werden, inklusive der Übergabe von Namen in Stringform.

Sicher wird eval auch aus Bequemlichkeit eingesetzt:

function nbg(nlx){eval("document."+nlx+".document.bgColor='blue'");}
function nbg(nlx){document.layers[nlx].document.bgColor='blue';}

Hier ist die Variante ohne eval evtl. auch noch schneller, ansonsten gibt es m.E. schonmal Situationen wo man mit eval Code spart oder seltener Variablen definieren muss.
Ich hatte auch schonmal Sachen die ohne eval nicht realisierbar schienen, oder wo es erheblich sparsamer gelang für verschiedene Browser gleichzeitig zu schreiben.
Auf die Schnelle hab ich jetzt nur das Beispiel location.href=eval("'"+parent.l1.document.title+Ziel+"'") gefunden, und weiss aber jetzt nicht mehr den Zusammenhang ob es nur eine Variable ersetzt oder ob z.B. Opera da sonst nicht wollte, Opera tut sich manchmal mit Variablen schwer und die 6.00 war dermassen buggy, schrecklich was da womöglich unnötig rumsumpft wenn nicht dokumentiert wird...

Grüsse

Cyx23