私は考えていた、
さらに、インタープリターEval を再度アクティブにするため、オーバーヘッドが発生します。
それが悪い可能性がある唯一の状況 (私が書いたものを除く) は、JSデータ (つまりeval'd) をサーバーに送信するときです。
他のシナリオは見当たりません。ユーザーが js を操作したい場合、ユーザーはブラウザーの境界内でのみプレイします (JS がサーバーと対話していない限り)。
私は正しいですか?
修正をいただければ幸いです。
私は考えていた、
さらに、インタープリターEval を再度アクティブにするため、オーバーヘッドが発生します。
それが悪い可能性がある唯一の状況 (私が書いたものを除く) は、JSデータ (つまりeval'd) をサーバーに送信するときです。
他のシナリオは見当たりません。ユーザーが js を操作したい場合、ユーザーはブラウザーの境界内でのみプレイします (JS がサーバーと対話していない限り)。
私は正しいですか?
修正をいただければ幸いです。
eval厳密に言えば、ブラウザのコンソールがすでに実行できること以上のことをしないため、 を使用しても実際には物理的に有害なことは何もありません。
<script>インジェクションの潜在的な危険性がありますが、それはユーザーが提供した入力をタグに入れるのと同じ危険性であり、 の特殊性ではありませんeval。
回避する主な理由evalは、文字列を解釈する必要があるためです。公平を期すために言うと、JavaScript ファイルを実行することは、基本的には、ファイル全体に対して非常に大きなものを呼び出すことと同じevalです (大まかに言えば)。なぜなら、JavaScript は解釈される (またはせいぜい実行時にコンパイルされる) からです。したがって、evalたとえばユーザーがボタンをクリックしたときにのみ実行される場合は、sparsely を使用しても問題ありません。evalループなどで頻繁に実行する場合にのみ、顕著な効果が現れます。setTimeoutこれが、たとえば、文字列の代わりに関数を渡すように常に言われる理由です。
とはいえ、 を使用する代わりの方法は常にevalあります。古いコードの一部を書き直す必要があるかもしれませんが、常に回避できます。