Javascript Eval для оценки логического выражения - PullRequest
4 голосов
/ 28 сентября 2011

Мне нужно оценить логическое выражение, созданное пользователем. Я вижу два способа сделать это:

1) построить строку и передать ее в eval
2) построить абстрактное синтаксическое дерево и оценить его самостоятельно

Я реализовал это с помощью eval, так как это самое простое решение. Я не уверен, что второй вариант будет намного лучше, я не удивлюсь, если он будет на самом деле медленнее.

Безопасность не должна быть проблемой, так как я строю выражение из набора предопределенных значений.

В большинстве случаев выражения будут довольно простыми, но можно создавать более сложные выражения. Это настолько сложно, насколько это возможно: "(true || false && false) && (true)"

Мысли

1 Ответ

3 голосов
/ 28 сентября 2011

Я думаю, что это правильный сценарий использования eval.Однако, если вы когда-нибудь захотите использовать CSP (политику безопасности контента), это потрясающе .. eval может быть отключен.

...