あなたの例では、括弧の理由がわかりません。
すぐに呼び出される関数については、Douglas Crockford が以下のコード サンプルを推奨し、提供しています。ソースはhttp://javascript.crockford.com/code.htmlです
関数がすぐに呼び出される場合、生成される値が関数自体ではなく関数の結果であることを明確にするために、呼び出し式全体を括弧で囲む必要があります。
var collection = (function () {
var keys = [], values = [];
return {
get: function (key) {
var at = keys.indexOf(key);
if (at >= 0) {
return values[at];
}
},
set: function (key, value) {
var at = keys.indexOf(key);
if (at < 0) {
at = keys.length;
}
keys[at] = key;
values[at] = value;
},
remove: function (key) {
var at = keys.indexOf(key);
if (at >= 0) {
keys.splice(at, 1);
values.splice(at, 1);
}
}
};
}());