1

我必须为一个非常具体的任务处理客户的 Javascript 框架。

我有这个html:

<div data-foo="(#a = #b)">...loading</div>

在 Javascript 中,我将data-*-Attribute 作为字符串:

foo = '(#a = #b)'

然后使用以下答案进行 ajax 调用:

#a=1, #b=1

接下来,将标记替换为来自 ajax 调用的值(并且操作符也被替换):

foo = '(1 == 1)'

然后foo用 eval() 评估;

result = eval(foo)  // true

有没有办法避免eval()?我总是必须评估类似'(0 == 1)'or的字符串'((0 == 0) && (1 == 0))'。我没有机会影响服务器的共鸣。我需要一种良好且安全的方法来评估字符串到trueor false

编辑:

可能的字符串是:

'(0 == 0)'
'(0 == 1)'
'(0 > 5)'
'(117 > 0)'
'((0 == 1) && (11 == 11))'
'((0 == 1) || (0 == 0))'
'(((0 < 1) || (0 == 0) ) && (33 != 11))'
...and so on!

结果总是需要是trueor false

4

1 回答 1

2

以下是一些可能解决您的问题的资源:

还有很多。搜索“ javascript 表达式解析器”。

于 2013-05-29T19:07:15.453 回答