7

私は次のプラグインを持っています:

;(function($, window, document)
{
...
...

})(jQuery, window, document);

私は何を理解することができます; $はjQueryであることに気づきますが、関数の後に(jQuery、window、document)が続く理由を誰かが説明できます。

4

5 に答える 5

11

これは、「自己発動」または「即時呼び出し」関数と呼ばれます。これは、関数が最後の括弧のセットのパラメーターを使用して作成されるとすぐに実行されることを意味します。

さらに詳しい情報

于 2012-10-04T09:22:17.457 に答える
4

これは、即時呼び出し関数式または自己実行無名関数と呼ばれます。これにより、開発者は自分のプライベート宣言を非表示にできます。

;(                                 // <---------------+
                                   //                 | encapsulate the function
  function($, window, document) {  // <--+ declare    | and call it passing three
                                   //    | anonymous  | arguments.
  }                                // <--+ function   |
                                   //                 |
)(jQuery, window, document);       // <---------------+
于 2012-10-04T09:31:30.620 に答える
3

あなたが何を求めているのか完全にはわかりませんが、彼らがしていることは、jQueryオブジェクト、windowオブジェクト、およびdocumentオブジェクトを関数に渡すことです。

ほとんどの場合、パフォーマンス上の理由でこれを行います。これにより、最小化子は、ローカル変数であるため、およびwindowdocumentようなものへのすべての参照を短縮することができます。大規模なライブラリでは、数バイト節約できます。wd

さらに、グローバル変数(実際にはマイクロ最適化)と比較して、ローカル変数へのアクセスがわずかに速いと思います(参照atmはありません)。

于 2012-10-04T09:23:21.390 に答える
1

これは即時呼び出し関数式です

つまり、関数はすぐに宣言されて実行されます。これは、新しいスコープを作成するために行われます。

于 2012-10-04T09:22:27.023 に答える
1

これは、すぐに呼び出される無名関数(いわゆるIIFE)です。

jQueryエイリアスを渡すことで$、外部環境の正しいバージョンへの参照であることを確認できますwindowdocument

于 2012-10-04T09:22:41.687 に答える