После } не хватает ; (в 10-ой строчке)
Это "странное" поведение можно объяснить так:
var test = function func(fn){
return fn;
}
(function(){ // функция из этих скобок передается в ф-цию func
alert('test');
})(); // а эти скобки вызывают то, что вернула ф-ция func