質問: jQuery .globalEval()関数 jQueryソースをブラウズして、 `.globalEval()`という関数を見つけました。私が理解していない非常に簡単なドキュメントがあります。明らかに、外部スクリプトを動的に読み込むことは重要です。どうして?ソースもやや曖昧です: ``` globalEval: function( data ) { if ( data && rnotwhite.test( data ) ) { //We use execScript on Internet Explorer //We use an anonymous function so that context is window //rather than jQuery in Firefox ( window.execScript || function( data ) { window[ "eval" ].call( window, data ); } )( data ); } }, ``` 人々は実際にこれを実生活で使用していますか?もしそうなら、何のために?
回答: これは、名前のように、グローバルコンテキストで `eval` コードを実行するために使用されます。たとえば、次のようなものを考えてみましょう( jsFiddle )。 ``` function example(){ $.globalEval("var example1 = 'first';"); eval("var example2 = 'second';"); console.log("In function: " + example1); //Prints 'first' console.log("In function: " + example2); //Prints 'second' } example(); console.log("Global: " + example1); //Prints 'first' console.log("Global: " + example2); //ReferenceError ``` `example1` は `globalEval` を使用して定義されているため、グローバルスコープにあります。普通の普通の `eval` を使用すると、変数は `eval` が呼び出されるスコープ内でのみ使用可能です。 別のJSスクリプトをロードしてそのスクリプトをグローバルコンテキストで実行したい場合に便利です(たとえば、 `example1` が `example` 関数であるため、 `globalEval` を使用する必要があります。 なぜjQueryソースが `eval.call` の代わりに `window ["eval"] .call` を使うのか分かりませんが、誰かが説明できると確信しています:)