Hi,
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.
ich formuliere es um: Der auszuführende String kommt irgendwo her, und augenscheinlich nicht aus der Feder des Programmierers. Also ist der User die wahrscheinlichste Quelle - und was _der_ eingibt, sollte nun wirklich nicht einfach so ausgeführt werden.
Sicher wird eval auch aus Bequemlichkeit eingesetzt:
Ja, oder aus Unkenntnis, mangelndem Sicherheitsbewusstsein usw. Ich kenne nur wenige Einsätze von eval() - egal in welcher Sprache - bei denen ich überzeugt bin, dass sie sinnvoll sind.
function nbg(nlx){eval("document."+nlx+".document.bgColor='blue'");}
document[nlx].document.bgColor existiert.
Ich hatte auch schonmal Sachen die ohne eval nicht realisierbar schienen,
Die Betonung liegt hier auf "schienen". Wenn es nicht Unkenntnis über grundlegende JavaScript-Mechanismen (auch z.B. 'this') ist, dann ist es meist ein Konzeptfehler, der durch eine günstigere Funktions- und Variablenstruktur sehr sauber zu lösen wäre.
Auf die Schnelle hab ich jetzt nur das Beispiel location.href=eval("'"+parent.l1.document.title+Ziel+"'") gefunden,
Je nach Browser ist jener document.title auch (vom User!) schreibbar; Du hast also nicht den leisesten Schimmer, was hiernach passieren mag. Missbrauch ist möglich.
Aus welchem Grund sollte in einem Title eigentlich etwas stehen, dass man als URL-Basis verwenden kann? Und warum eval()st Du auf eine String-Verknüpfung, um anschließend einen String zu erhalten, den Du schon bei der String-Verknüpfung selbst hattest?
Cheatah