Heim >Web-Frontend >js-Tutorial >Wie kann ich String-Formeln in JavaScript ohne „eval()' sicher auswerten?

Wie kann ich String-Formeln in JavaScript ohne „eval()' sicher auswerten?

Susan Sarandon
Susan SarandonOriginal
2024-11-16 16:50:03806Durchsuche

How to Safely Evaluate String Formulas in JavaScript Without `eval()`?

Berechnen von String-Werten in JavaScript ohne eval()

Problem:
Viele JavaScript-Entwickler verwenden eval ()-Funktion zum Berechnen von in Zeichenfolgen gespeicherten Formeln. Allerdings ist eval() unsicher, da es beliebigen Code ausführen kann. Gibt es eine sichere Alternative?

Antwort:
Ja, Sie können den Function()-Konstruktor verwenden, um Zeichenfolgen mit sicher auszuwerten Formeln.

Code:

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

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

Erklärung:

Der Function()-Konstruktor verwendet einen String als Argument und gibt eine Funktion zurück. Das Schlüsselwort „return“ wird am Anfang der Zeichenfolge hinzugefügt, um sicherzustellen, dass die Funktion das Ergebnis der Formel ergibt.

Vorteile:

  • Sicherheit : Diese Methode verhindert die Ausführung von Schadcode, indem sie die Auswertung auf die Formelzeichenfolge beschränkt.
  • Zuverlässigkeit: Im Gegensatz zu eval() ist die Funktion() Der Konstruktor gibt immer das Ergebnis der Formel zurück, unabhängig von der Syntax oder den verwendeten Variablen.

Das obige ist der detaillierte Inhalt vonWie kann ich String-Formeln in JavaScript ohne „eval()' sicher auswerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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