2016-10-04 4 views
0

として$を渡す:私はこのようなコードに出くわした関数の引数(jQueryの)

function doSomething($, $variable){ 
    ... 
} 



(function ($){ 

    $(function() { 
    doSomething ($, $('.div')); 
    }); 

}(jQuery)); 

はそれがjQueryののdoSomething()内部を定義し、$の除去と同じですか?

おかげ

+1

はい、それは何かのように見えます。 – smnbbrv

+0

'$'は他の変数と同じです:それを関数のパラメータとして渡すか、外側のスコープでグローバル変数にすることができます。 –

+0

あなたはそれについての明確な理解のためにこの記事を参照することができます[リンク](http://stackoverflow.com/questions/10371539/why-define-an-anonymous-function-and-pass-it-jquery-as-the-引数)。それはその話題について非常によく説明しています。 – legend

答えて

2

はそれがjQuerydoSomething()内部を定義し、$の除去と同じですか?あなたが意味する場合、それは同じ

です:

(function ($){ 

    $(function() { 
    function doSomething($, $variable){ 
    } 
    doSomething($('.div')); 
    }); 

}(jQuery)); 

...その後いや、あなたは別の関数内でそれを定義した場合、一方、あなたの質問にバージョンを、doSomethingは、明らかにグローバルであるため、 、そうではありません。あなたの質問の最後に

構造が$は、関数を作成し、それを呼び出して、jQueryに渡すと$名前付き引数としてそれを受け入れることによって、jQueryに等しくないnoConflictモードから保護するためのものです。

function doSomething($, $variable){ 
    ... 
} 

jQuery(function($) { 
    doSomething ($, $('.div')); 
}); 
1

最初の機能は$とセットにわたって閉じ生命維持である。そのコードがより簡単かもしれないので、それは、著者がjQueryの準備ができてコールバックに自分自身への参照を渡すという事実を知らなかったということであってもよいです値はjQueryになります。 $が他のコードで上書きされないようにするためによく使用されます。

このIIFEの内部では、$は常にjQueryですが、IIFEの外側ではそうではない可能性があります。

内部関数$(function() {..は、DOM対応のハンドラであり、内部でコードを実行する前にドキュメントが読み込まれるのを待ちます。

doSomething関数は生命維持の外に定義され、生命維持の引数へのアクセスを持っていないので、$が未定義又はその範囲内のjQuery以外することができ、したがって著者は、引数として$を通過することを決めましたdoSomething($, $variable)に、渡された値と引数の両方が同じ名前を持つため、読みにくいです。

関連する問題