Maison >interface Web >js tutoriel >Comment évaluer en toute sécurité des expressions mathématiques en JavaScript sans utiliser « eval() » ?

Comment évaluer en toute sécurité des expressions mathématiques en JavaScript sans utiliser « eval() » ?

DDD
DDDoriginal
2024-12-08 08:27:14251parcourir

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

Évaluer des expressions mathématiques en JavaScript sans utiliser Eval()

Évaluer des expressions mathématiques sans recourir à la fonction eval() potentiellement dangereuse est une pratique courante tâche en programmation JavaScript. Pour résoudre ce problème, explorons quelques solutions alternatives.

JavaScript Expression Evaluator

La bibliothèque JavaScript Expression Evaluator fournit un moyen pratique d'analyser et d'évaluer des expressions mathématiques. Il vous permet de spécifier des chaînes d'expression et d'utiliser des variables pour personnaliser l'évaluation. Par exemple, le code suivant évalue l'expression "2 ^ x" avec x égal à 3 :

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

Math.js

Math.js est un autre populaire Bibliothèque JavaScript pour les opérations mathématiques. Il comprend un analyseur d'expressions puissant qui prend en charge un large éventail de fonctions mathématiques. Comme l'évaluateur d'expressions JavaScript, il vous permet de transmettre des variables et d'évaluer des expressions de manière dynamique :

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

Recommandation de l'utilisateur

Un autre utilisateur a suggéré une réponse sur Stack Overflow qui utilise la fonction evalx() pour évaluer les expressions mathématiques en toute sécurité. Voici un extrait de cette réponse :

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

En appelant la fonction evalx(), vous pouvez évaluer des expressions sans les risques de sécurité associés à eval().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn