我必须处理客户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))'
之类的字符串。我没有机会影响服务器的共鸣。我需要一种安全的方法来评估字符串true
或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
或false
。