Maison > interface Web > js tutoriel > Comment évaluer des formules de chaîne en JavaScript sans utiliser eval() ?

Comment évaluer des formules de chaîne en JavaScript sans utiliser eval() ?

Patricia Arquette
Libérer: 2024-11-14 22:31:02
original
982 Les gens l'ont consulté

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

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

Évaluer des chaînes contenant des formules est une tâche courante en programmation. Bien que JavaScript propose la fonction eval() à ces fins, elle présente des risques de sécurité et est généralement déconseillée. Voici une approche alternative pour calculer les valeurs de chaîne sans utiliser eval().

Utilisation du constructeur Function()

Le constructeur Function() peut créer des fonctions anonymes à partir de chaînes. Cela peut être utilisé pour évaluer des expressions de chaîne. Par exemple, considérons le code suivant :

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

console.log(evil('12/5*9+9.4*2')); // => 40.4
Copier après la connexion

En renvoyant une nouvelle fonction évaluée par le constructeur Function(), nous pouvons exécuter des opérations mathématiques stockées dans des chaînes. Dans cet exemple, la chaîne "12/5*9 9.4*2" est évaluée à 40.4.

Avantages de cette approche

Par rapport à eval(), le constructeur Function() permet :

  • Sécurité améliorée : L'évaluation des chaînes avec le constructeur Function() évite les vulnérabilités de sécurité potentielles associées à eval(), qui peut exécuter du code arbitraire.
  • Sécurité des types : Le constructeur Function() vérifie la syntaxe de l'argument de chaîne avant de l'exécuter, améliorant ainsi la sécurité des types.

Alors que le constructeur Function() offre une alternative plus sécurisée et fiable à eval(), il est important de noter qu'il évalue toujours le code de manière dynamique, des précautions doivent donc être prises pour éviter les entrées malveillantes.

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