JavaScript では eval() と new Function() に互換性がありますか?
JavaScript コードを含む文字列を操作する場合、通常、次の 2 つの関数が発生します。 eval() と new Function()。どちらも文字列に埋め込まれたコードを実行できますが、異なる特徴と動作を示します。
eval() と new Function(): 主な違い
コード スニペットの理解
コード スニペットあなたが提供した eval() と new Function() の異なる動作を示します:
<code class="javascript">var evaluate = function(string) { return eval('(' + string + ')'); } var func = function(string) { return (new Function( 'return (' + string + ')' )()); }</code>
両方の関数は文字列 "2 1" を評価し、結果を返します。ただし、関数にローカル変数 "a" を含めるようにコードを変更すると、eval() はローカル変数にアクセスして変更できるが、new Function() はアクセスできないことがわかります。
注意事項とベスト プラクティス
eval() と new Function() は動的コードを実行する便利な方法を提供しますが、慎重に使用する必要があります。
ほとんどの場合、動的コード実行には、テンプレート リテラルや new なしの Function コンストラクターなど、確立された JavaScript 言語機能に依存することをお勧めします。
以上がJavaScript で `eval()` と `new Function()` を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。