我需要评估用户构建的 bool 表达式。我看到了两种方法:
1) 构建一个字符串并将其传递给 eval
2)构建抽象语法树,自己评估
我用 eval 实现了它,因为它是最简单的解决方案。我不相信第二种选择会好得多,如果它实际上更慢我也不会感到惊讶。
安全应该不是问题,因为我是根据一组预定值构建表达式。
在大多数情况下,表达式会非常简单,但也可以构建更复杂的表达式。这将变得非常复杂:“(true||false&&false)&&(true)”
想法?
最佳答案
我认为这是 eval 的有效用例。但是,如果您曾经想使用 CSP(内容安全策略),这非常棒……可能会禁用 eval。
关于用于 bool 表达式评估的 Javascript eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587639/