javascriptには即時関数という機能があります。
即時関数 (IIFE; Immediately Invoked Function Expressions) は、関数がブラウザーのコンパイラーに読み込まれた直後に呼び出される関数です。IIFE は、関数宣言の末尾に追加の括弧 “()” があるかどうかで識別できます。
Function (関数) – 用語集 | MDNより引用。
書き方は
(function(){/*処理本文*/}(引数));
(function(){/*処理本文*/})(引数);
です。どちらでも問題ありません。即時関数と名付けられていますが、動作からは一時的な関数とも言えます。即時関数は
関数のインスタンスを作る その関数を実行する その関数を捨てる(ステートメントの実行を終了したあとはもう参照しないので)
Bear Bibeault; John Resig. JavaScript Ninjaの極意 (Kindle の位置No.2730-2732). . Kindle 版. より引用。
ということを行います。
即時関数が用いられる主な目的はスコープの制御です。スコープは変数名の参照範囲のことです。変数名ごとにスコープが定められており、スコープの範囲内ならば変数を呼び出し、書き換えることができ、範囲外ならば呼び出せず、書き換えられないといった具合です。
即時関数内で宣言された変数は宣言された即時関数内のみがスコープになります。このため、あるコードを即時変数として記述したならば既存のコードの変数名を考慮することなくそのコードを既存のコードに継ぎ足せます。特に即時関数に出番があるのは、任意のページに好き勝手スクリプトを追加する目的であるブックマークレットや変数名の衝突が容易に予想できる圧縮される予定のコードなんかです。