Por que esse tipo de chamada de função está errada no JavaScript?

Gostaria de criar uma função anônima e invocá-la imediatament

1) Isso trará um erro de sintaxe. Por quê

function ()
{
    alert("hello");
}();

2) envolva a definição da função com () e ela funcion

(function ()
{
    alert("hello");
})();

3) ou, atribua a função anônima a uma variável. Funciona

var dummy = function()
{
    alert("hello");
}();

Por que a primeira maneira não funciona?

questionAnswers(1)

yourAnswerToTheQuestion