首页 >web前端 >js教程 >如何在不使用 Eval() 的情况下安全地计算 JavaScript 中的字符串公式?

如何在不使用 Eval() 的情况下安全地计算 JavaScript 中的字符串公式?

Susan Sarandon
Susan Sarandon原创
2024-11-13 08:00:02215浏览

How Can You Safely Evaluate String Formulas in JavaScript Without Using Eval()?

在没有 Eval 的情况下计算 JavaScript 中的字符串值

JavaScript 中的 eval() 函数会带来安全风险,并可能导致代码注入。为了避免这些问题,建议探索评估公式字符串的替代方法。

其中一个替代方法是 Function() 构造函数,它可以评估代码字符串并返回结果。例如,考虑以下字符串公式:

var apa = "12/5*9+9.4*2";

您可以使用 Function() 构造函数来创建表示公式的新函数,而不是使用 eval(apa):

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

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

Function() 构造函数将一串代码作为参数并返回一个函数对象。字符串中的 return 语句确保返回公式的结果。然后,console.log() 函数会显示计算结果。

使用 Function() 构造函数是 eval() 的更安全的替代方案,因为它不会执行字符串中的任意代码。它提供了一种更可控、更可预测的方式来计算 JavaScript 中的字符串表达式。

以上是如何在不使用 Eval() 的情况下安全地计算 JavaScript 中的字符串公式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn