0

私は、論理演算と数学演算しか実行できない関数を意味し3+5<=9ます。"string"=="string" && (3<9 || 12>3)a+b<c"string".length > 3

編集:

そこで、eval() を使用する正当な理由を 1 つ見つけました ...

4

2 に答える 2

2

あなたの質問に対する最も簡単な答えは、「いいえ、ありません」だと思います。

自分で作成したり、既存のもの (JS ライブラリになる) を見つけたり、パーサー ジェネレーターを入手して Javascript で実行できるパーサーを生成したりできます。

ANTLRはそのようなツール/プラットフォームの 1 つです。Javascript ランタイムのダウンロードは、ダウンロード ページにあります。ただし、それを理解して実際に機能するガンマーを作成するには、ANTLRWorks ツールが必要です。

基本的な Math パーサー (4 つの主要な演算子をサポート) は、何をしているのかがわかれば、数分で起動して実行することができます。

于 2012-08-09T14:06:24.097 に答える
0

はい、解決策があります:新しい関数オブジェクトを作成するだけで、スコープを汚染しないという利点があります...確かに安全に見えます: https://stackoverflow.com/a/7650148/393087

はい、わかっています。これは私が本当に望んでいたものではありませんが、安全性の面で正しい方向に近づいています。

于 2012-09-17T20:46:10.073 に答える