5

SyncfusionからjQuerySuccinctly無料の電子ブック(ここ)をダウンロードして、例を調べ始めました。

私はこの種のものをたくさん見ます:

<script> (function ($)
{
    $('a').mouseenter(
        function () { alert(this.id); });
})(jQuery);
</script>

著者がこの構文を使用している理由がわかりません。$オブジェクトは無名関数に渡されていますか?なんで?そして、(jQuery)次の無名関数は何のためにありますか?

これは単に他のライブラリとの競合を回避する方法ですか?これらの例はもっと「簡潔に」書くことができるように私には思えます:)

ありがとう。

4

2 に答える 2

7

グローバルjQueryを削除するために使用された$ === jQuery場合でもクロージャーを作成します。$.noConflict()$

$これにより、ユーザーがプロトタイプなどのフレームワークも使用しているかどうかを気にすることなく、いつでも使用できます$

クロージャには、変数/関数を明示的にグローバルにしない限り、変数/関数がグローバルではないという利点もあります(またはオブジェクトvarに関数を使用およびアタッチしないことによって)windowthis

于 2012-05-08T14:59:28.843 に答える
4

はい、これはjQueryが他のライブラリと競合しないようにするための簡潔な方法です。それは「閉鎖」として知られています。つまり、変数の$スコープはその関数に限定されており、関数の外部で害を及ぼすことなく使用できます。

于 2012-05-08T14:59:30.360 に答える