質問: 今更 jquery ですが、(function($){ の書き方ってわかりますか ? (function ($) { var func=function(){ }; var a=1; })(window.jquery); などと書いても、func 及び a は外部と衝突を起こさない。 スコープ的なものを意識しての書き方だと思いますが、 })(window.jquery); ここの部分は })(jquery); こういうのも見ます。上記と同じでしょうか ? })(xxxxx); xxxxxの引数に全然違う名前を書くというのは無しですよね ?
回答: 局所的なスコープを作るための使い捨て関数ですね。 よく使う値 jquery を短い名前 $ に短縮する意味もあるようです。 jquery は、(たいていの場合は)グローバルスコープ上の変数名です。 単に jquery と記載すると、局所的なスコープで上書きされていないかぎり、グローバルスコープの変数から値を取ってきます。 window は、グローバルスコープ上の変数名で、中身はグローバルオブジェクトそのものです。 window.jquery と記載すると、window が別の値に上書きされることはないので、「必ず」グローバルスコープの変数から値を取ってきます。 必ずを強調したい場合は、変数名の頭に window. をつけましょう。 余談ではありますが、 最近では window ではなく globalthis を使う方針のようです。 https://developer.mozilla.org/ja/docs/web/javascript/reference/global_objects/globalthis