Maison >interface Web >js tutoriel >Comment évaluer en toute sécurité des formules de chaînes en JavaScript sans « eval() » ?

Comment évaluer en toute sécurité des formules de chaînes en JavaScript sans « eval() » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 16:50:03807parcourir

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

Calcul des valeurs de chaîne en JavaScript sans eval()

Problème :
De nombreux développeurs JavaScript utilisent eval () fonction pour calculer les formules stockées dans des chaînes. Cependant, eval() n'est pas sécurisé, car il peut exécuter du code arbitraire. Existe-t-il une alternative sécurisée ?

Réponse :
Oui, vous pouvez utiliser le constructeur Function() pour évaluer en toute sécurité les chaînes contenant formules.

Code :

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

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

Explication :

Le constructeur Function() prend une chaîne comme argument et renvoie une fonction. Le mot-clé 'return' est ajouté au début de la chaîne pour garantir que la fonction est évaluée au résultat de la formule.

Avantages :

  • Sécurité : Cette méthode empêche l'exécution de code malveillant en limitant l'évaluation à la chaîne de formule.
  • Fiabilité : Contrairement à eval(), la Function() Le constructeur renvoie toujours le résultat de la formule, quelle que soit la syntaxe ou les variables utilisées.

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