JavaScript コードでグローバル変数を回避するために、人々が次の構文を使用するのを何度も目にしました。
(function($) {
// here code
// here code
})(jQuery);
質問があります: なぜ関数の引数を as として宣言する必要があり、なぜobject を引数として$
渡す必要があるのでしょうか?jQuery
JavaScript コードでグローバル変数を回避するために、人々が次の構文を使用するのを何度も目にしました。
(function($) {
// here code
// here code
})(jQuery);
質問があります: なぜ関数の引数を as として宣言する必要があり、なぜobject を引数として$
渡す必要があるのでしょうか?jQuery
その必要はありません。関数の引数には、好きな名前を付けることができます。$ を jQuery ライブラリ オブジェクトのエイリアスとして使用するのが一般的であるため、これは jQuery を使用する人々の一般的/ベスト プラクティスです。
これを行うべき理由は、ライブラリ オブジェクトのエイリアスとして $ を使用する他のライブラリがあるためです。関数クロージャは $ がラッパー関数内の jQuery オブジェクトであることを保証するため、これらのライブラリとの衝突を避けるために必要です。
次に例を示します。
(function (myJqueryAlias) {
console.log(myJqueryAlias('document') === jQuery('document'));
})(jQuery);
これにより、このブロックにはまだ $ が jQuery としてあり、「jQuery("selector")」の代わりに「$("selector")」のようなものを書くことができることをアーカイブします。そして、このブロックの外では、変数 $ は本来あるべきものです (たとえば、$ も使用する別の JSLib を使用します)。