Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie können Sie String-Formeln in JavaScript sicher auswerten, ohne Eval() zu verwenden?

Susan Sarandon
Freigeben: 2024-11-13 08:00:02
Original
178 Leute haben es durchsucht

How Can You Safely Evaluate String Formulas in JavaScript Without Using Eval()?

Auswerten von String-Werten in JavaScript ohne Eval

Die Funktion eval() in JavaScript birgt Sicherheitsrisiken und kann zur Code-Injection führen. Um diese Probleme zu vermeiden, wird empfohlen, alternative Methoden zur Auswertung von Formelzeichenfolgen zu erkunden.

Eine solche Alternative ist der Function()-Konstruktor, der eine Codezeichenfolge auswerten und das Ergebnis zurückgeben kann. Betrachten Sie beispielsweise die folgende Zeichenfolgenformel:

var apa = "12/5*9+9.4*2";
Nach dem Login kopieren

Anstatt eval(apa) zu verwenden, können Sie den Function()-Konstruktor verwenden, um eine neue Funktion zu erstellen, die die Formel darstellt:

function evil(fn) {
  return new Function('return ' + fn)();
}

console.log(evil('12/5*9+9.4*2')); // => 40.4
Nach dem Login kopieren

Der Function()-Konstruktor verwendet eine Codezeichenfolge als Argument und gibt ein Funktionsobjekt zurück. Die return-Anweisung innerhalb des Strings sorgt dafür, dass das Ergebnis der Formel zurückgegeben wird. Die Funktion console.log() zeigt dann das ausgewertete Ergebnis an.

Die Verwendung des Function()-Konstruktors ist eine sicherere Alternative zu eval(), da er keinen beliebigen Code aus einer Zeichenfolge ausführt. Es bietet eine kontrollierte und vorhersehbare Möglichkeit, Zeichenfolgenausdrücke in JavaScript auszuwerten.

Das obige ist der detaillierte Inhalt vonWie können Sie String-Formeln in JavaScript sicher auswerten, ohne Eval() zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage