Funciones autoejecutables [duplicado]

Posible duplicado:
Diferencia entre (función () {}) (); y función () {} ();

Estoy tratando de entender algunas de las características de JavaScript un poco mejor. EnThe Definitive JavaScript dice que las funciones autoejecutables deben tener corchetes alrededor de ellos de esta manera:

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

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

pero enJavaScript - The Good Parts de donde se toma este ejemplo, tiene la función autoejecutable anterior sin los corchetes, así:

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

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

Ambos ejemplos funcionan para mí, pero quería preguntar si había alguna diferencia en la funcionalidad de la que debería estar al tanto. Espero que esto no sea demasiado trivial. Tan sólo quería asegurarme.

Muchas gracias.

Editar:

Como ha señalado Rob W, hay otro hilo en el tema.Este es un excelente blog sobre este tema. que estaba vinculado desde el otro post.

Respuestas a la pregunta(3)

Su respuesta a la pregunta