2

私はスクリプトで作業していて、次のことを見つけましたが、それが何を意味するのかについての情報は本当に見つかりません

(function($) {
    $(document).ready(function(e) {


       ... bla bla bla ...

    });
}) (jQuery);

(function($){}) (jQuery);と同じですか$(function () {});?もしそうなら、なぜ誰かが 2 回定義するのでしょうかdocument.ready?

4

6 に答える 6

3

いいえ、同じではありません。グローバル変数が別のライブラリによって上書きされた$場合でも、関数のスコープ内でローカル変数として使用できるようにするために、jQuery オブジェクトに渡される匿名関数です。や と$は全く違います。$(function () { })$(document).ready(function () { })

この特定のパターンは、jQuery プラグインのオーサリングドキュメントで推奨されています。

[プラグインを作成する場合] jQuery をドル記号にマップする IIFE (Immediately Invoked Function Expression) に渡して、その実行範囲内で別のライブラリによって上書きされないようにすることをお勧めします。

(function( $ ) {
  $.fn.myPlugin = function() {
 
   // Do your awesome plugin stuff here

 };
})( jQuery );
于 2013-01-16T15:42:13.377 に答える
2

(function($){}) (jQuery);と同じですか$(function () {});

いいえ。1 つ目は、主にグローバル スコープの汚染を防ぐために使用される匿名関数の即時呼び出しです。この場合、それ$が への参照であることを確認するためにも使用されjQuery、他の場所での上書きを心配する必要はありません$

2 つ目は、ドキュメント対応ハンドラーを jQuery にバインドするための省略表現です。

もっと読む:

于 2013-01-16T15:42:14.803 に答える
2

いいえ、そうではありません.jQuery.noConflictを使用せずに使用する別のライブラリがロードされた場合に競合が発生しないように、パラメータとしてjQueryを渡し、それを関数スコープで表すために(function($){}) (jQuery);使用するIIFE(即時起動関数式)です。$$

于 2013-01-16T15:43:02.523 に答える
2

いいえ

(function(){})();

ブラウザがそのスクリプトに遭遇するとすぐに実行されます。.ready() は、ドキュメント全体が解析された後にトリガーされるイベントです

于 2013-01-16T15:45:23.873 に答える
1

いいえ、ちがいます。これは、内部にドキュメント準備完了ハンドラーを持つクロージャーです。これは$、エンクロージャー内の が jQuery 用に予約されており、他のライブラリーに干渉しないようにするために使用されます。

于 2013-01-16T15:42:22.557 に答える
0

ここに明確な説明があります。

http://jquery-howto.blogspot.com/2008/12/what-heck-is-function-jquery.html

于 2013-01-16T15:44:14.233 に答える