用于布尔表达式计算的Javascript eval

用于布尔表达式计算的Javascript eval,javascript,optimization,eval,Javascript,Optimization,Eval,我需要计算用户构建的布尔表达式。我认为有两种方法可以做到这一点: 1) 构建一个字符串并将其传递给eval 2) 构建一个抽象语法树并自己评估它 我已经用eval实现了它,因为它是最简单的解决方案。我不相信第二种选择会更好,如果它真的慢了,我也不会感到惊讶 安全性不应该是一个问题,因为我是从一组预先确定的值构建表达式的 在大多数情况下,表达式将非常简单,但也可以构建更复杂的表达式。这是一个非常复杂的问题:“(真| |假&&false)&(真)” 想法?我认为这是一个有效的eval用例。然而,如果

我需要计算用户构建的布尔表达式。我认为有两种方法可以做到这一点:

1) 构建一个字符串并将其传递给eval
2) 构建一个抽象语法树并自己评估它

我已经用eval实现了它,因为它是最简单的解决方案。我不相信第二种选择会更好,如果它真的慢了,我也不会感到惊讶

安全性不应该是一个问题,因为我是从一组预先确定的值构建表达式的

在大多数情况下,表达式将非常简单,但也可以构建更复杂的表达式。这是一个非常复杂的问题:“(真| |假&&false)&(真)”


想法?

我认为这是一个有效的eval用例。然而,如果您曾经想要使用CSP(内容安全策略),这真是太棒了。。eval可能被禁用。

谢谢。我们最终还是选择了eval。实际上,我们使用的是“var f=new Function('return'+exprStr);f();”,因为有传言说它更快,但似乎没有人知道原因。对于诸如“真”或“假”之类的琐碎表达式,我们也完全跳过了求值