JavaScriptでeval()を使用してはいけない理由
eval()関数は、JavaScriptで長い間使用されてきました。 使用するのは有害であることが広く認められているため、もう頻繁に目にすることはないでしょう。 それと、それを使用することに伴ういくつかの危険性を簡単に見てみましょう。
キーワード eval
「evaluate」の略語です。 この関数は基本的にJavaScriptコードを含む文字列を受け取り、それを評価します。
eval('2 + 3 + 1');
// 6
単純な式を評価することができます…またはJavaScriptコードの束!
var foo = 2;
eval('var bar = 3;\
var baz = 1;\
\
function addStuff() {\
return foo + bar + baz;\
}\
\
addStuff();\
');
// 6
使用を避ける理由 eval()
本当に高レベルのJavaScript(以下を参照)を実行している場合を除き、通常、リスクは使用するメリットを上回ります。 eval()
. これを使用しない理由のいくつかは次のとおりです。
- 悪意のあるコード:呼び出し
eval
コンピュータをクラッシュさせる可能性があります。 例:使用する場合eval
サーバー側でいたずら好きなユーザーが、ユーザー名として無限ループを使用することにしました。 - ひどく遅い:JavaScript言語は、文字列だけでなく、JavaScriptタイプ(数値、関数、オブジェクトなど)の全範囲を使用するように設計されています。 使用する
eval
通常のJavaScriptコードよりも桁違いに遅くなります。
それを考慮して eval()
まだECMAScript標準の一部です…それの適切な使用法はありますか?
の合法的な使用 eval()
使用する必要があるJavaScript開発の小さなサブセットがあります eval
. これらには、テンプレートライブラリ、インタープリター、コマンドライン、およびモジュールシステムの開発が含まれます。 これらのタイプのソフトウェア開発のほとんどは、メタプログラミングおよびビルドツールです。
使用するかどうかわからない場合 eval
、StackOverflowでクイック検索を試してください。 ほとんどの場合、より良いアプローチがあります。