0

プロトタイプ.js と jquery の競合を防ぐために、jquery コードを次のスニペットでラップしました。

(function($) {

})(jQuery);

私がこれを正しく理解していれば$ === jQuery、私の機能の中で真実です。しかし、この場合、関数内jQueryでエイリアスを取得する実際の「パラメータ内」ですか?$

私の仮定が正しければ、jQueryそれを呼び出すために両方の場所を渡す必要がありjQueryますか、それとも関数の最後に渡すだけでよいでしょうか?

4

3 に答える 3

3

IIFE 内で、またはいずれかを使用できます$jQueryどちらもスコープ内にあります。

のみ(jQuery)が実際に引数として渡されます-$は単なる関数パラメータです (したがって にエイリアスされjQueryます)。

それを確認するには、コードは次とほぼ同等です。

var f = function($) {
    ...
};

f(jQuery);

ただし、IIFE は無名関数です。

于 2013-03-28T13:08:24.747 に答える
1

これを正しく理解していれば、 $ === jQuery は関数内で true になります。しかし、この場合、関数内でエイリアス $ を取得する実際の「パラメーター内」の jQuery はありますか?

はい。$はパラメーター名で、変数jQueryは引数として渡すものです。これは任意の式である可能性があります。

私の仮定が正しければ、jQuery を呼び出すために両方の場所で jQuery を渡す必要がありますか、それとも関数の最後に渡すだけでよいでしょうか?

はい、パラメータの名前を変更する必要があります。その場合、グローバル変数を参照するだけでよいため、あまり意味がありませんjQuery(たとえば、別の jQuery バージョンで上書きする予定がない限り) $。エイリアスは簡潔にするためだけのものです。Prototype との混同を避けたい場合は、jQ代わりに使用してください。

于 2013-03-28T13:11:37.307 に答える
0

クロージャ内では$、jQuery ライブラリのみを確実に参照します。具体的には、その時点でのライブラリ バージョンです。

その後、別のバージョンのライブラリがロードされた場合$でも、期待どおりのものしか指していません。シンボルはjQuery後者のバージョンに置き換えられます。

関数内でエイリアスを使用する場合は、関数の引数で名前をjQueryに変更する必要があります。$jQuery

于 2013-03-28T13:12:58.767 に答える