javascript:我可以在这个例子中避免使用eval吗?

时间:2013-05-29 18:38:57

标签: javascript ajax eval

我必须处理客户Javascript Framework以完成一项非常具体的任务。

我有这个HTML:

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

在Javascript中,我得到data-* - 属性为字符串:

foo = '(#a = #b)'

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

#a=1, #b=1

接下来标签被ajax调用的值替换(并且操作符也被替换):

foo = '(1 == 1)'

然后使用eval();

评估foo
result = eval(foo)  // true

有没有办法避免eval()?我总是要评估'(0 == 1)''((0 == 0) && (1 == 0))'之类的字符串。我没有机会影响服务器的共鸣。我需要一种安全的方法来评估字符串truefalse

修改

可能的字符串是:

'(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!

结果必须始终为truefalse

1 个答案:

答案 0 :(得分:2)

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

还有更多。搜索&#34; javascript expression parser&#34;。