首页  >  文章  >  web前端  >  如何在没有“eval()”的情况下安全地计算 JavaScript 中的字符串公式?

如何在没有“eval()”的情况下安全地计算 JavaScript 中的字符串公式?

Susan Sarandon
Susan Sarandon原创
2024-11-16 16:50:03730浏览

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

在没有 eval() 的情况下计算 JavaScript 中的字符串值

问题:
许多 JavaScript 开发人员使用 eval () 函数计算存储在字符串中的公式。然而,eval() 是不安全的,因为它可以执行任意代码。有安全的替代方案吗?

答案:
是的,您可以使用 Function() 构造函数安全地计算包含以下内容的字符串公式。

代码:

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

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

说明:

Function() 构造函数采用字符串作为参数并返回一个函数。将“return”关键字添加到字符串的开头,以确保函数计算结果为公式的结果。

优点:

  • 安全性:此方法通过将计算限制为公式字符串来防止恶意代码的执行。
  • 可靠性:与 eval() 不同,无论使用何种语法或变量,Function() 构造函数始终返回公式的结果。

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

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