Differenza tra (function () {}) (); e function () {} ();

Possibile duplicato:
Are “(function () {}) ()” e “(function () {} ())” sono funzionalmente uguali in JavaScript?

Questo è qualcosa che non ho ancora capito, ma ho usato function () {} () solo perché la mia syntax VIM evidenzia avvita se aggiungo la parentesi, anche se ho visto (function () {}) () in giro molte volte, forse è una cosa di IE?

modificare:

var singleton = function() { // code }(); var singleton = (function() { // code })(); 

Peter Michaux discute la differenza in An Important Pair of Parens .

Fondamentalmente le parentesi sono una convenzione per indicare che sta seguendo un’espressione di funzione immediatamente invocata, non una semplice funzione. Soprattutto se il corpo della funzione è lungo, ciò riduce le sorprese,

Il set extra di parentesi rende più chiaro che stai costruendo una funzione e poi chiamandola. È una cosa in stile di codifica, non una cosa di funzionalità.

 function(){}(); 

non funziona nella maggior parte dei browser. È necessario utilizzare le parentesi attorno alla funzione per eseguirla

 (function(){})(); 

quindi il browser saprà che l’ultima parentesi dovrebbe essere applicata a tutte le espressioni

 function(){} 

UPD : se non si utilizza la parentesi, il brower potrebbe fraintendervi. Se chiami semplicemente la funzione e chiudi il risultato

 function() { alert(1); }(); 

quindi ff e ie genererà un errore