586 Stimmen

Warum ist die Verwendung der JavaScript eval-Funktion eine schlechte Idee?

Die eval-Funktion ist eine leistungsstarke und einfache Möglichkeit, dynamischen Code zu erzeugen.

22voto

Andrew Hedges Punkte 21406

Die Übergabe von Benutzereingaben an eval() ist ein Sicherheitsrisiko, aber auch jeder Aufruf von eval() erzeugt eine neue Instanz des JavaScript-Interpreters. Dies kann ein Ressourcenfresser sein.

15voto

Brian Punkte 4951

Vor allem ist es viel schwieriger zu warten und zu debuggen. Es ist wie ein goto . Sie können es verwenden, aber es macht es schwieriger, Probleme zu finden und schwieriger für die Leute, die später Änderungen vornehmen müssen.

14voto

matt lohkamp Punkte 2092

Eine Sache, die man im Hinterkopf behalten sollte, ist, dass man eval() oft benutzen kann, um Code in einer ansonsten eingeschränkten Umgebung auszuführen - Social-Networking-Sites, die bestimmte JavaScript-Funktionen blockieren, können manchmal überlistet werden, indem man sie in einen eval-Block auflöst.

eval('al' + 'er' + 't(\'' + 'hi there!' + '\')');

Wenn Sie also JavaScript-Code dort ausführen wollen, wo er sonst nicht erlaubt wäre ( Myspace Ich schaue dich an...), dann kann eval() ein nützlicher Trick sein.

Aus all den oben genannten Gründen sollten Sie es jedoch nicht für Ihren eigenen Code verwenden, bei dem Sie die vollständige Kontrolle haben - es ist einfach nicht notwendig und sollte besser in das Regal "knifflige JavaScript-Hacks" verbannt werden.

14voto

Thevs Punkte 3129

Solange Sie eval() keinen dynamischen Inhalt (durch cgi oder Eingabe) zulassen, ist es genauso sicher und solide wie alle anderen JavaScript in Ihrer Seite.

8voto

Paul Mendoza Punkte 5551

Zusammen mit dem Rest der Antworten glaube ich nicht, dass eval-Anweisungen eine erweiterte Minimierung haben können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X