Heim > Web-Frontend > js-Tutorial > Hauptteil

Kann ich String-Ausdrücke in JavaScript auswerten, ohne eval() zu verwenden?

Barbara Streisand
Freigeben: 2024-11-20 02:46:01
Original
461 Leute haben es durchsucht

Can I Evaluate String Expressions in JavaScript Without Using eval()?

Auswerten von Zeichenfolgenausdrücken in JavaScript ohne Eval()

Problem:

In JavaScript ist die Funktion eval() Wird häufig zum Auswerten von Zeichenfolgen verwendet, die Codefragmente enthalten. Es kann jedoch Sicherheitsrisiken und Leistungsprobleme mit sich bringen. Gibt es eine alternative Möglichkeit, den Wert einer in einer Zeichenfolge gespeicherten Formel zu berechnen, ohne eval() zu verwenden?

Antwort:

Ja, eine sichere und leistungsstarke Alternative ist mit dem Function()-Konstruktor. So funktioniert es:

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

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

Erklärung:

  • Die Funktion evil() benötigt einen String fn, der einen JavaScript-Ausdruck darstellt.
  • Es stellt „return“ der Zeichenfolge voran und erstellt so effektiv eine Funktion, die den Wert des Ausdrucks zurückgibt.
  • Der neue Function()-Konstruktor erstellt eine Funktion aus der geänderten Zeichenfolge und führt sie aus.
  • Das zurückgegebene Ergebnis ist der berechnete Wert des Ausdrucks.

Das obige ist der detaillierte Inhalt vonKann ich String-Ausdrücke in JavaScript 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