使用以字符串形式提供的函数和表达式时,eval的替代方法

时间:2014-03-29 12:59:59

标签: javascript

在有人声称这是重复之前,我在这里已经阅读了几个关于更好的替代方案的问题,而不是在JavaScript中使用eval,但没有一个问题适用于我的问题。

我提供的字符串包含包含函数名称的表达式。例如,我可能有一个字符串"getHighest(2)+findMiddle()-2*totalLength(rect1,rect2)"

我很容易就此致电eval并获得结果。我主要担心的是安全性,因为我不知道这些字符串来自哪里。似乎我有两个选择:

  1. 继续使用eval但首先解析字符串以确保每个函数调用都是"安全列表的一部分"在整个字符串上使用eval之前。
  2. 不要使用eval;但是我必须找到另一种方法来基本上做同样的事情,我怀疑它会变得棘手,或者改变我的API的整体性质以及如何创建和使用这些字符串。
  3. 我偏向于第一个选项,因为在自由格式的字符串表达式上使用eval非常方便。任何人都可以推荐一个我没想到的潜在更好的解决方案,或者说服我这种方法不正确吗?

0 个答案:

没有答案