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
Libérer: 2024-11-16 16:50:03
original
820 Les gens l'ont consulté

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal