質問: なぜこれらの2つのパラメータがjQueryソースにありますか? jQueryソースは次のようにクロージャーでラップされます。 ``` (function(window, undefined) { //awesome jQuery library code in here })(window); ``` 私はこれらのパラメータのどちらかが必要な理由を理解していません。 `window` はグローバル変数なので、なぜ渡す必要がありますか?グローバルパラメータを渡し、同じ名前のクロージャ内でそのパラメータにアクセスする目的は何ですか? `未定義`パラメータとは何ですか?なぜ値が渡されないのですか?
回答: 私はこれが既に答えられていると確信していますが、 * `window` a)でコード圧縮を行うと、名前を変更することができます(つまり、無名関数内の一文字変数名に置き換えます)。 jQueryがロードされた後に誰かが `window` をグローバルスコープで再定義した場合のように、ライブラリが定義された時点でのwindowオブジェクトです。`未定義`を引数として(ただし値を渡さずに) `undefined` にも同様のことを行い、 `undefined` >未定義変数が再定義されています(これはJavascriptで許可されています)。 どちらの場合も、グローバル変数を関数スコープで使用できるようになるため、変数への参照が高速になるはずです。インタープリタはグローバルスコープを調べる前に検索します。しかし、私は正直なところ、ここでのパフォーマンスの違いはかなり大きいと想像することはできません - 私は最大の問題は、変数名のmunging、それはよりコンパクトなコードのために縮小したと思う。