Heim >Web-Frontend >js-Tutorial >Wie kann man mathematische Ausdrücke in JavaScript sicher auswerten, ohne „eval()' zu verwenden?

Wie kann man mathematische Ausdrücke in JavaScript sicher auswerten, ohne „eval()' zu verwenden?

DDD
DDDOriginal
2024-12-08 08:27:14256Durchsuche

How to Safely Evaluate Mathematical Expressions in JavaScript Without Using `eval()`?

Auswerten mathematischer Ausdrücke in JavaScript ohne die Verwendung von Eval()

Das Auswerten mathematischer Ausdrücke ohne Rückgriff auf die potenziell gefährliche Funktion eval() ist weit verbreitet Aufgabe in der JavaScript-Programmierung. Um dieses Problem anzugehen, untersuchen wir einige alternative Lösungen.

JavaScript Expression Evaluator

Die JavaScript Expression Evaluator-Bibliothek bietet eine praktische Möglichkeit, mathematische Ausdrücke zu analysieren und auszuwerten. Sie können Ausdruckszeichenfolgen angeben und Variablen verwenden, um die Auswertung anzupassen. Der folgende Code wertet beispielsweise den Ausdruck „2 ^ x“ aus, wobei x gleich 3 ist:

const result = Parser.evaluate("2 ^ x", { x: 3 });

Math.js

Math.js ist ein weiteres beliebtes Beispiel JavaScript-Bibliothek für mathematische Operationen. Es enthält einen leistungsstarken Ausdrucksparser, der eine Vielzahl mathematischer Funktionen unterstützt. Wie der JavaScript Expression Evaluator ermöglicht es Ihnen, Variablen zu übergeben und Ausdrücke dynamisch auszuwerten:

const result = math.eval('sin(45 deg) ^ 2');

Benutzerempfehlung

Ein anderer Benutzer hat auf Stack Overflow eine Antwort vorgeschlagen nutzt die Funktion evalx(), um mathematische Ausdrücke sicher auszuwerten. Hier ist ein Ausschnitt aus dieser Antwort:

function evalx(expr, scope) {
  return Function(`'use strict'; return (${expr})`)()(...scope);
}

Durch Aufrufen der Funktion evalx() können Sie Ausdrücke ohne die mit eval() verbundenen Sicherheitsrisiken auswerten.

Das obige ist der detaillierte Inhalt vonWie kann man mathematische Ausdrücke in JavaScript sicher auswerten, ohne „eval()' zu verwenden?. 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