我必须为一个非常具体的任务处理客户的 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))'
。我没有机会影响服务器的共鸣。我需要一种良好且安全的方法来评估字符串到true
or 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!
结果总是需要是true
or false
。