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

标签 javascript ajax eval

我必须为一项非常具体的任务处理客户的 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)''((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

最佳答案

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

还有很多。搜索“javascript expression parser”。

关于javascript:我可以在这个例子中避免 eval 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821475/

相关文章:

javascript - jqGrid如何向列添加多个复选框

javascript - Laravel 路由在 API 中不起作用,返回页面 404

javascript - AngularJS - 如何从 promise 中呈现模板和数据

java - 使用 struts 2 下载为 csv

javascript - 同步加载外部 JavaScript

javascript - 警报不适用于 vuejs

javascript从纪元字符串转换为日期对象

javascript - jQuery 验证引擎属性不起作用

namespaces - clojure - 不同命名空间中的 eval 代码

C# .NET 4.0 表达式求值