次のコードを見てください:
var a = function(t) { return t; }
(1 2).toString();
alert(a);
結果はどうなるでしょうか?
実際、主な問題は最初の行の後にセミコロンがないため、実際には var a = function(t) { return t; }(1 2).toString(); となることです。 >最初に変数 a を作成し、次に代入ステートメントを実行します。無名関数は実行のためにパラメータ 1 2 を渡し、結果 .toString() を返し、それを a に代入します。
function() {}() の書き方の詳細については、js 名前空間を参照してください。