我需要评估用户构建的布尔表达式。我认为有两种方法可以做到:
1)构建一个字符串并将其传递给eval
2)构建一个抽象语法树并自己进行评估
我用eval实现了它,因为它是最简单的解决方案。我不相信第二种选择会好得多,如果它实际上更慢,我也不会感到惊讶。
安全不应成为问题,因为我正在从一组预定值构建表达式。
在大多数情况下,表达式会非常简单,但可以构建更复杂的表达式。这就像它会得到的那样复杂:“(true || false&& false)&&(true)”
思想?
答案 0 :(得分:3)
我认为这是eval的有效用例。但是,如果您曾经想要使用CSP(内容安全策略),这很棒..可能会禁用eval。