2011-09-28 139 views
3

我需要评估用户构建的布尔表达式。我看到两种方法可以做到这一点:用于布尔表达式评估的Javascript评估

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

我与EVAL实现它,因为它是最简单解。我不相信第二种方法会好得多,如果实际上速度较慢,我不会感到惊讶。

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

在大多数情况下,表达式将非常简单,但可以构建更复杂的表达式。这大约是复杂,因为它会得到:“(真||假& &假)& &(真)”

的思考?

回答

3

我认为这是eval的有效用例。但是,如果您想要使用CSP(内容安全策略),那真是太棒了.eval可能会被禁用。

+0

谢谢。我们最终只是坚持评估。实际上,我们使用“var f = new Function('return'+ exprStr); f();”因为有传言说它速度更快,但似乎没有人知道为什么。我们也跳过了eval,用于诸如'true'或'false'等简单表达式。 – AaronSzy