Funções auto-executáveis ​​[duplicadas]

Duplicata Possível:
Diferença entre (function () {}) (); e function () {} ();

Eu estou tentando entender alguns dos recursos do JavaScript um pouco melhor. EmThe Definitive JavaScript Ele diz que as funções auto-executáveis ​​devem ter parênteses em volta delas assim:

var obj = (function() {
    var value = 0;

    return {
        increment: function(inc) {
            value += typeof inc === "number" ? inc : 1;
        },
        getValue: function() {
            return value;
        }
    }
})();

mas emJavaScript - The Good Parts de onde esse exemplo é retirado, ele possui a função auto-executável acima sem a rodada de colchetes, da seguinte forma:

var obj = function() {
    var value = 0;

    return {
        increment: function(inc) {
            value += typeof inc === "number" ? inc : 1;
        },
        getValue: function() {
            return value;
        }
    }
}();

Ambos os exemplos funcionam para mim, mas eu queria perguntar se havia alguma diferença na funcionalidade da qual eu deveria estar ciente. Espero que isso não seja muito trivial. Eu só queria ter certeza.

Muito obrigado.

Editar:

Como Rob W apontou, há outro tópico sobre o assunto.Este é um excelente blog sobre esta questão que estava ligado a partir do outro post.

questionAnswers(3)

yourAnswerToTheQuestion