JavaScript の (function(){})() って書き方

jQuery のソースが

(function() {

    var window = .....

みたいに始まってて、何じゃこりゃと思った。最後は

})();

となってるので、ようするに全体が

(function(){})();

となってるわけか。function(){...} はいいとして、それを囲む () とか 最後の () がようわからん。検索してみた。

jQueryの良いところは,名前空間を汚染しないところです。すべての機能をロードした状態で,jQueryと$の2つのオブジェクトしか存在しません。このため,他のJavaScriptライブラリと混ぜて使うことができます。これを実現しているのが,ソースコードの最初に登場するこの部分です。

全体のコードが,(function(){...})() で囲まれています。初めて見ると不思議な感じがしますが,無名関数を定義してすぐに実行するという処理を行っています。関数は,ふつうhoge()のような形で呼び出しますが,最初の()で括られた部分がhogeにあたり,その後に引数なしの()が続くと説明すれば少し分かりやすいでしょうか。

これにより,すべての定義をローカルスコープに押し込めることに成功しています。

なるほどー。