ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript は構文チェックに eval または new Function を使用します_JavaScript のヒント
構文チェックには new Function() を使用します
eval() メソッドを無差別に使用することはできません。不適切なタイミングで eval() メソッドを使用すると、プログラム全体に問題が発生する可能性があります。
New Function() はそれほど大きな問題を引き起こしません。問題。 new Function() によって構築された関数は、どのような状況でもグローバル スコープで直接動作しますが、構文チェックのみを行う場合は、構築された new 関数を直接呼び出さない限り、スコープの問題によって予期しない結果が生じることはありません。 。
eval() が受け取るパラメータの前に「0」を追加します。
実際、これは IE のバグによるものです。何らかの理由で、IE で eval() を呼び出して関数を動的に構築したい場合。
例:
eval('(function(){ /* code here */ })');
IE での戻り値は未定義ですが、他のブラウザーではこれが正しく返されます。新しく構築された関数。
最も簡単で効果的な解決策は、すべての主要なブラウザで互換性を持たせるために、先頭に「0」を追加することです。
例:
eval('0,function(){ /* code here */ }');
注: IE9 の Chakra エンジンでは、この問題は解決されています。
配列オブジェクトの concat メソッドを使用して、新しい配列を生成します。
単一のオブジェクト パラメーターを、処理のために 1 つの要素のみを含む配列に変換するには、"[ ].concat() の形式を使用できます。 o)」。
例: