モジュールのパターンは理解していると思いますが、一部の例では、次のように JQuery をパラメーターとして渡すのはなぜですか。
Namespace.AppName = (function ($) {
// Code Here
})(jQuery);
JQuery を渡さなくても、モジュール内で $() 呼び出しを行うことで、Jquery ライブラリを問題なく使用できます。では、なぜこのようなことをする人がいるのでしょうか?
モジュールのパターンは理解していると思いますが、一部の例では、次のように JQuery をパラメーターとして渡すのはなぜですか。
Namespace.AppName = (function ($) {
// Code Here
})(jQuery);
JQuery を渡さなくても、モジュール内で $() 呼び出しを行うことで、Jquery ライブラリを問題なく使用できます。では、なぜこのようなことをする人がいるのでしょうか?
ここでの考え方は、 IS jQueryであることを確認jQuery
し$
ながら、内部関数を渡すことです。これは、特にmootoolsのように使用する他のライブラリと一緒にjQueryを使用するときに使用$
するコードを保護するために一般的に使用されます。$
$
たとえば、このコードが<head>
<!--load jQuery-->
<script src="jquery.js"></script>
<script>
//"$" is jQuery
//"jQuery" is jQuery
</script>
<!--load another library-->
<script src="anotherlibrary.js"></script>
<script>
//"$" is the other library
//"jQuery" is jQuery
//out here, jQuery code that uses "$" breaks
(function($){
//"$" is jQuery
//"jQuery" is jQuery (from the outside scope)
//in here, jquery code that uses "$" is safe
}(jQuery));
</script>
これは、jQueryのショートカットとして$を使用できるようにするためです。このようにカプセル化しないと、他のライブラリと衝突することがあります。
$「安全に」使用するために。ほとんどの開発者は、jQuery の代わりに「$」を使用することに慣れています。
$ をグローバルとして使用すると、他の JS ライブラリと競合する可能性があります。
これは、名前空間/スコープが $ をjQuery
使用し、$ を使用する Prototype などの他の JS ライブラリではないようにするためです。