2011-09-28 184 views
3

我需要評估用戶構建的布爾表達式。我看到兩種方法可以做到這一點:用於布爾表達式評估的Javascript評估

1)建立一個字符串,將其傳遞給EVAL
2)建立一個抽象語法樹,並評估它自己

我與EVAL實現它,因爲它是最簡單解。我不相信第二種方法會好得多,如果實際上速度較慢,我不會感到驚訝。

安全性不應該是一個問題,因爲我從一組預定值構建表達式。

在大多數情況下,表達式將非常簡單,但可以構建更復雜的表達式。這大約是複雜,因爲它會得到:「(真||假& &假)& &(真)」

的思考?

回答

3

我認爲這是eval的有效用例。但是,如果您想要使用CSP(內容安全策略),那真是太棒了.eval可能會被禁用。

+0

謝謝。我們最終只是堅持評估。實際上,我們使用「var f = new Function('return'+ exprStr); f();」因爲有傳言說它速度更快,但似乎沒有人知道爲什麼。我們也跳過了eval,用於諸如'true'或'false'等簡單表達式。 – AaronSzy